Filenames
在 Linux 中查找 2 個目錄之間失去的文件名
我正在嘗試比較 Linux 中的 2 個目錄( A / B )並刪除 B 中不存在於 A 中的任何文件。
例如,如果文件 ‘1.jpg’ 在目錄 B 中存在,但在目錄 A 中不存在,則需要從 B 中刪除它。
我曾嘗試使用 diff,但所有文件本質上都不同,所以它似乎不起作用。(它們是不同大小但具有相同 ID 的縮略圖)。因此,這只能通過文件名來完成,而忽略文件的實際內容。
有人可以闡明如何以最少的努力做到這一點嗎?
rsync
可以快速輕鬆地做你想做的事:rsync --dry-run --verbose --recursive --existing --ignore-existing --delete-after A/ B/
從幫助:
--existing skip creating new files on receiver --ignore-existing skip updating files that already exist on receiver --delete delete extraneous files from destination dirs
dry-run
在您對建議的結果感到滿意後刪除該選項,以實際執行刪除。手冊頁對選項有更明確的描述,甚至提到了您的案例:
--existing, --ignore-non-existing This tells rsync to skip creating files (including directories) that do not exist yet on the destination. If this option is combined with the --ignore-existing option, no files will be updated (which can be useful if all you want to do is to delete extraneous files). --ignore-existing This tells rsync to skip updating files that already exist on the destination (this does not ignore existing directores, or nothing would get done). See also --existing.