Shell-Script

刪除一個目錄中的文件,這些文件也在另一個目錄中

  • May 4, 2020

我使用這個複制了一個目錄:

cp -r dir/ ../../

不假思索地意識到它複製了內容dir而不是實際dir到上面的目錄。現在我有一堆文件需要刪除,這樣我才能cp正確重做。如果我錯誤地複制的所有文件與任何特定內容都不匹配,我該如何刪除它們?

好的,這與klapaucius 的回答基本相同。cp(如果覆蓋了一些現有文件,它不會修復任何損壞。)

假設您在源目錄中(在 中dir)。這個命令:

find . -type f -exec echo '{}' ';'

將列出您dir目錄中存在的所有文件(遞歸)(非常像-print)。該-type f選項用於防止列出子目錄。

所以,如果你使用:

find dir -type f -exec echo '../../../{}' ';'

這應該列出目標目錄中的相應文件(副本)。

現在,如果列表正確,您將能夠使用以下方法刪除副本:

find dir -type f -exec rm -- '../../../{}' ';'

至於修剪來自cp……嗯……的剩餘空目錄

引用自:https://unix.stackexchange.com/questions/19835