我有两个名为thumb 和thumb2 的目录。它们包含相同的文件名,但大小不同。不幸的是,thumb2 中有一些文件不在thumb 中,需要删除。
$ ls ../thumb2 | wc -l
199030
$ ls ../thumb | wc -l
193455
Run Code Online (Sandbox Code Playgroud)
我正在搜索一个命令行命令,该命令将从拇指 2 中删除所有不在拇指中的文件。
有没有人知道如何做到这一点?
我已经用一个小样本测试了这个解决方案,但在尝试之前一定要备份你的目录:
cd ../thumb2
for f in *; do test -e ../thumb/$f || echo rm $f; done
Run Code Online (Sandbox Code Playgroud)
我没有包含数千个文件的目录,所以我不知道这个命令是否适用于这么大的样本。请在备份目录后尝试一下。一旦您确定该命令正常工作,请删除该echo
命令。
这是格伦优秀解决方案的修改版本:
diff thumb thumb2 | \
while read field1 field2 dir filename; do
[[ $dir = "thumb2:" ]] && echo rm "thumb2/$filename"
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
77 次 |
最近记录: |