私は正規表現に初めてアクセスし、正規表現を使用していくつかのファイルの名前を変更しようとしています。私rename
(これ) そのファイルの名前を変更します。以下はコマンド例です。
$ rename -n 's/\(feat.//' *.mp3
(-n
オプション=試運転)
出力:
'103 Flume - Left Alone (feat. Jezzabell Doran).mp3'
would be renamed to '103 Flume - Left Alone Jezzabell Doran).mp3'
'214 Flume - Sleepless (feat. Jezzabell Doran) (Shlohmo Remix).mp3'
would be renamed to '214 Flume - Sleepless Jezzabell Doran) (Shlohmo Remix).mp3'
やりたいことは削除するんだ」(feat。アーティスト名)"をファイル名で検索します。(左角かっこから右角かっこへ)。変えてください。リミックス) ) .mp3" ~ "214 Flume - Sleepless (Shlohmo Remix).mp3"
(編集する:まな一つを与えた回答以下に関連します)
ファイル名から「-」を削除する方法を知っていますが、別のコマンドではなく's/ - //'
同じコマンドでこれを行うにはどうすればよいですか?rename 's/\(feat.//' *.mp3
rename 's/ - //' *.mp3
答え1
コマンドは似ていますsed
。たとえば、optionsを使用して複数の代替エントリを指定できます-e
。
rename -n -e 's/\(feat.//' -e 's/ - //' *.mp3
そして得る
'103 Flume - Left Alone (feat. Jezzabell Doran).mp3' would be renamed to '103 FlumeLeft Alone Jezzabell Doran).mp3'
'214 Flume - Sleepless (feat. Jezzabell Doran) (Shlohmo Remix).mp3' would be renamed to '214 FlumeSleepless Jezzabell Doran) (Shlohmo Remix).mp3'
文書には次のように記載されています。
-e
、--expr
このオプションのコード引数は、変数のファイル名を取り、
$_
それを変更してファイル名を変更するPerl式でなければなりません。他の、、、または-c
オプション-C
が指定されていない場合は、次のことができます。-e
-s
-z
無視する-e
コードの前部から。
答え2
あなたが望むもの欲はない閉じ括弧を一致させて含めます。文字通り受け入れるにはピリオドを避ける必要があります。
$ rename -n 's/\(feat\..*?\)//' *.mp3
103 Flume - Left Alone (feat. Jezzabell Doran).mp3 renamed as 103 Flume - Left Alone .mp3
214 Flume - Sleepless (feat. Jezzabell Doran) (Shlohmo Remix).mp3 renamed as 214 Flume - Sleepless (Shlohmo Remix).mp3