作为我正在开发的应用程序的一部分,我需要删除目录 A 中已经存在于目录 B 中的所有文件。我想到 rsync,但我无法阻止它将丢失的文件从源复制到目标。
我正在寻找的一个例子
IE
/dir1/apple
/dir1/orange
/dir1/banana
和
/dir2/orange
执行完该命令后,我会得到:
/dir1/apple
/dir1/banana
和
/dir2/orange
答案1
循环遍历目录 2 中的每个文件,并尝试删除basename
目录 1 中具有相同文件名的等效文件 ()。
for f in dir2/*; do echo rm -f -- dir1/"$(basename "$f")"; done
请注意,rm -f
如果找不到文件,则不会出错。echo
当您确定它会删除正确的内容时,请删除。
如果您只想调用rm
现有文件,请测试它们是否dir1
存在[[ -f … ]]
。
for f in dir2/*; do del=dir1/"$(basename "$f")"; [[ -f "$del" ]] && rm -- "$del"; done