我有两个包含一些常见文件的文件夹,我想删除xyz
文件夹中的重复文件。
的folder1:
/abc/file1.csv
/abc/file2.csv
/abc/file3.csv
/abc/file4.csv
folder2:
/xyz/file1.csv
/xyz/file5.csv
我想比较两个文件夹并从/xyz
文件夹中删除重复项。输出应为:file5.csv
目前我正在使用:
find "/xyz" "/abc" "/abc" -printf '%P\n' | sort | uniq -u | -exec rm {} \;
但它失败的原因是:如果-exec
不是拼写错误,您可以运行以下命令来查找包含二进制文件的包:
command-not-found -exec
-bash: -exec: command not found
答案 0 :(得分:2)
-exec
是find
的一个选项,当您启动管道时,您已经退出命令find
。
尝试使用xargs
,它会从stdin获取所有数据并附加到程序中。
UNTESTED
find "/xyz" "/abc" "/abc" -printf '%P\n' | sort | uniq -u | xargs rm
答案 1 :(得分:0)
查找234和123目录中的每个文件,通过-printf获取文件名,排序它们,uniq -d给出重复列表,按sed返回路径,使用123目录删除重复项,并将文件传递给xargs rm < / p>
命令:
find ./234 ./123 -type f -printf '%P\n' | sort | uniq -d | sed 's/^/.\/123\//g' | xargs rm
如果您在./123目录中并且在查找中使用文件夹的完整路径,则不需要。
答案 2 :(得分:0)
另一种方法:只需在abc中找到文件并尝试从xyz中删除它们:
UNTESTED
find /abc -type f -printf 'rm -f /xyz/%P' | sh