在一个目录中我的文件很少:
a.txt
b.txt
c.txt
z.txt
在不同的目录中我有一个名为map_file的文件名,其数据如下:
a.txt
b.txt
c.txt
d.txt
e.txt
f.txt
我想在目录中与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
答案 0 :(得分:0)
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
如果可以进一步优化,请查看我的回答并回复。