我需要对不同目录中的文件集进行“减法”操作。假设文件系统层次结构如下:
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
确保带有空格和控制字符的文件正常工作留给读者练习^_-