我有一個目錄,其檔案副檔名為 .JPG 或 .NEF,並且我想刪除該目錄中不存在 X.JPG 格式的 X.NEF 檔案。 (這裡的 X 可以是任何字串。)除了手動之外,我不知道如何做到這一點。
更一般的情況是當您想要尋找目錄 A 中也存在於目錄 B 中的所有檔案時。 (第一個問題可以使用 轉換為第二個問題mmv
。)
答案1
您可以使用 shell 的${var%ext}
參數替換功能來刪除每個檔案的原始副檔名:舉例說明
touch file{1..6}.NEF file{1,2,4,6}.JPG
然後
for nef in *.NEF; do [[ -f "${nef%.NEF}.JPG" ]] || echo rm -- "$nef"; done
結果是
rm -- file3.NEF
rm -- file5.NEF
解釋:
第一個指令只建立 6 個.NEF
文件,編號file1.NEF
為6 個文件以及其中 3 個的file6.NEF
對應文件,也就是只是一些空文件來測試第二個指令。.JPG