比较目录中的文件与从相同的目录
问题描述:
新增和删除的文件映射文件的目录中,我有几个文件为:比较目录中的文件与从相同的目录
a.txt
b.txt
c.txt
z.txt
,并在不同的目录中我有一个名为MAP_FILE与像数据的文件名:
a.txt
b.txt
c.txt
d.txt
e.txt
f.txt
我想比较(只有文件名不包含文件名的内容)文件在目录中退出时使用map_file中的文件名。
- 如果在目录中找到新文件(不退出map_file),则将文件复制并重命名为其他目录。
- 如果文件不存在于该目录(按照MAP_FILE),则还复制和重命名一些目录。
下面的示例代码,我只获得了第一个条件不能同时使用。我使用的
示例代码
for file in *.txt
do
if [[ ! $(grep "$file" /path/to/map_file) ]]; then
echo "$file is not in map_file -- copy/rename somewhere else."
cp ${file} ../Add-${file}
fi
done
所以最终的输出应该是这样的:
Add-z.txt Del-d.txt
Del-e.txt
Del-f.txt
答
cd path/to/directory
map_file=path/to/map.txt
for file in `ls -lrt *.txt | awk '{print $9}'`
do
if [[ ! $(grep "$file" $map_file) ]];
then
echo "$file is not present in map_file"
#cp ${file} ../Add-${file}
else
while IFS= read line
do
if [ ! -f "$line" ];
then
#touch ../Del-${line}
fi
done <"$map_file"
fi
done
请看看我的答案和回应,如果能进一步优化。