如何删除一个目录中存在于另一个目录中的文件?

如何删除一个目录中存在于另一个目录中的文件?

我需要对不同目录中的文件集进行“减法”操作。假设文件系统层次结构如下:

A\1.txt
A\2.txt
A\3.txt

B\2.txt
B\4.txt

...我想删除下A存在的所有文件B(无递归,我只需要比较文件名)。

结果应该是:

A\1.txt
A\3.txt

(没有任何改变B\

目标操作系统是 Windows - 命令行或 GUI 工具。我也可以接受 UNIX 命令行方法 - 我已经安装了 GnuWin32。

答案1

在 B\ 中创建文件列表,用 A\ 替换 B\ 并删除它们。

/bin/ls -1 B/ | xargs -I {} echo rm A/{}

得到回声后,将其移除。例如:

$ ls A/
1 2 3
$ ls B/
1 2 
$ /bin/ls -1 B/ | xargs -I {} echo rm A/{}
rm A/1
rm A/2

如果你有很多文件,我建议做类似的事情

#!/bin/sh
for f in `ls -1 B/*`
do rm A/$f
done

确保带有空格和控制字符的文件正常工作留给读者练习^_-

相关内容