如何偵測同名但不同副檔名的檔案?

如何偵測同名但不同副檔名的檔案?

我有一個目錄,其檔案副檔名為 .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

相關內容