(1)、(2)のファイルが存在しない場合は、そのファイルを削除してください。

(1)、(2)のファイルが存在しない場合は、そのファイルを削除してください。

私の写真ライブラリはめちゃくちゃです。一部のコピーのため、私の画像は次のようになります。

IMG_20220505_1701.jpg
IMG_20220505_1701 (1).jpg
IMG_20220505_1701 (2).jpg

これで、名前に(1)または(2)を含むすべての写真を削除したいと思います。ただし、そのファイルのファイルがない場合にのみ適用されます。どうすればいいですか?

ベストアンサー1

数字のないファイルがある場合、名前に括弧内の数字を含むすべてのファイルが削除されます。

for file in *'('* ; do 
    origFile=$(sed 's/ *([0-9]*)//' <<<"$file")
    [ -e "$origFile" ] && [ "$file" != "$origFile" ] && rm -- "$file"
done

数字のないファイルがない場合は、すべての数字ファイルが保存されます。たとえば、somefile (1).pngand が存在するが存在somefile (2).pngしない場合、およびsomefile.pngsomefile (1).pngすべてsomefile (2).png保持されます。これが問題になる可能性がある場合は、上記のコマンドを実行した後、(1)次のコマンドperl-renamerenameUbuntuや他のDebianベースのディストリビューションから呼び出されます)を使用してすべてのファイルの名前を変更できます。

rename -- 's/ \(1\)//' *'(1)'*

その後、最初のコマンドを再実行して1つだけを維持します。または、ファイルのみが存在する状況が発生した場合は、試してみることもでき(2)ます(N)

おすすめ記事