
我有照片,在資料夾 A 中,它們也存在於資料夾 B 和 C 中。如何在資料夾A中搜尋並刪除它們? Perl 腳本或其他東西將是理想的選擇,因為我不喜歡下載用於此任務的軟體。
答案1
嘗試這個指令:
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
如何使用?
步驟1:建立一個臨時目錄以將重複檔案移入其中:
ToDelete=/tmp/ToDelete; mkdir -p "$ToDelete"
第2步:設定destdir
為您的FolderA目錄,我們要從該目錄中刪除重複的照片。
destdir=/path/to/FolderA
步驟3cd 到您的第一個來源目錄(FolderB)並執行指令
cd /path/to/FolderB
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
步驟4:現在 cd 到下一個來源目錄(FolderC)並再次執行指令
cd /path/to/FolderC
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
好的。現在,如果您測試該命令並查看結果,請刪除echo
將重複照片移至/tmp/ToDelete
目錄中的命令。
請參閱下面的測試:
$ ls ~/FolderA
1.jpg 2.jpg 6.jpg 7.jpg 8.jpg
$ ls ~/FolderB
3.jpg 4.jpg 5.jpg 7.jpg 8.jpg 9.jpg
$ ls ~/FolderC
6.jpg 7.jpg 8.jpg 9.jpg
$ ToDelete=/tmp/ToDelete; mkdir -p "$ToDelete"
$ ls /tmp/ToDelete/
$ destdir=~/FolderA
$ cd ~/FolderB
/FolderB$ find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec mv -v "$destdir/{}" "$ToDelete"/ \;
‘/home/Fischer/FolderA/./8.jpg’ -> ‘/tmp/ToDelete/8.jpg’
removed ‘/home/Fischer/FolderA/./8.jpg’
‘/home/Fischer/FolderA/./7.jpg’ -> ‘/tmp/ToDelete/7.jpg’
removed ‘/home/Fischer/FolderA/./7.jpg’
/FolderB$ cd ~/FolderC
/FolderC$ find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec mv -v "$destdir/{}" "$ToDelete"/ \;
‘/home/Fischer/FolderA/./6.jpg’ -> ‘/tmp/ToDelete/6.jpg’
removed ‘/home/Fischer/FolderA/./6.jpg’
/FolderC$ ls /tmp/ToDelete/
6.jpg 7.jpg 8.jpg
/FolderC$ ls -l ~/FolderA
1.jpg 2.jpg
/FolderC$ C00L ;)
以及它是如何運作的?
當您切換到FolderB或FolderC並運行尋找命令,所以你正在尋找其中的任何文件(.
指當前目錄),然後使用CMP指令(用於逐字節比較兩個檔案)將{}
FolderB/FolderC中的每個檔案()與destdir
(FolderA($destdir/{}
))中的檔案進行比較,如果它們相同,則我們將該檔案(從FolderA到臨時目錄/tmp/ToDelete
)與下一個移動MV命令 -exec mv "$destdir/{}" "$ToDelete"/ \;
。
答案2
答案3
你可以使用程式 fslint
它搜尋重複項(除其他外)
fslint可以在軟體中心下載。當您開啟程式時,fslint 有一個使用者介面,第一個選項卡是關於尋找重複項的。您可以指定資料夾。
更多資訊 :使用者手冊 fslint
答案4
有許多重複照片查找器在線提供實用程式。有些比其他更好,有些更快,有些易於使用,許多是免費的,有些必須付費才能解鎖全部功能。
使用最佳重複照片查找器短語進行 Google 搜索,找出可用的內容並找到適合您需求的內容。