在一个目录中我的文件很少:
a.txt
c.txt
c.txt
z.txt
在不同的目录中我有一个名为map_file的文件名,其数据如下:
a.txt
b.txt
c.txt
d.txt
e.txt
f.txt
我想比较(只有文件名不是文件名的内容)文件在目录中与map_file中的文件名进行比较。如果在目录中找到新文件(不在map_file中退出)则将文件复制并重命名为其他文件目录。
答案 0 :(得分:0)
如果约束到shell,您可以grep查看映射文件中的每个第一个列表文件名,并使用该结果来确定是否复制/重命名。像这样:
cd dir_a
for f in *; do
if ! grep -qE '^'"$f"'$' /path/map_file; then
cp "$f" /dir_b/new_name
fi
done
答案 1 :(得分:0)
看看我对this question that is very similar的回答。
简而言之,您可以循环访问文件并在文件中找到它们:
for file in *.txt
do
if [[ ! $(grep "$file" /path/to/map_file) ]]; then
echo "$file is not in map_file -- copy/rename somewhere else."
fi
done
那应该为你做。
如果您有任何问题,请与我们联系。