名前を変更する必要がある写真がたくさんあります。
[Wedding] Happy Day_001 [February].jpg
[Mountain] Summer Camp_165 [May].jpg
[Beach] Music Fest_58 [August].jpg
すべての角かっこを削除する必要があります。そうするために、私は this & this を見つけました。
それらのページのようにsed
コマンドを使用すると、角括弧の前後のスペースがまだあります。私の場合、内部のテキスト、前後のスペース、角かっこ自体を削除する必要があります。
Happy Day_001.jpg
Summer Camp_165.jpg
Music Fest_58.jpg
[first]
& [last]
ブラケットを削除するには、sed
コマンドを使用してどうすればよいですか?
sed
は間違ったツールです。ファイルの名前は変更しません。可能なものとペアリングできますが、Perlの rename
を使用する方が簡単です :
rename -n 's/\[.*?\]//g' *
-n
を使用すると、rename
はどのような変更が行われるかを示します。 -n
なしで実行して、実際にファイルの名前を変更します。 rename
はPerlであり、Perlでは、.*?
は.*
のような貪欲な一致ではないため、[^]]*
のようなトリックを使用する必要はありません。
周囲の空白も削除するには:
rename -n 's/\s*\[.*?\]\s*//g' *
sed
を使用してファイルの名前を変更するべきではありませんが、Perlプログラムrename
を使用できます。たとえば、次のようにします。
$ rename -n 's/\[[^]]+\] ([^[]+) \[[^]]+\]/$1/' *
rename([Beach] Music Fest_58 [August].jpg, Music Fest_58.jpg)
rename([Mountain] Summer Camp_165 [May].jpg, Summer Camp_165.jpg)
rename([Wedding] Happy Day_001 [February].jpg, Happy Day_001.jpg)
実際にファイルの名前を変更するには、テスト後に-n
を削除します。
s/old/new
old
をnew
に置き換えます\[
リテラル[
[^[]+
[
ではない文字(stuff)
stuff
を保存して、後で$1
、$2
などとして参照できるようにしますこれは、ファイル名に一貫性がある場合にのみ機能します。 muruの答え は、はるかに移植性があります。