Linux の名前変更コマンドについてヘルプが必要です

Linux の名前変更コマンドについてヘルプが必要です

以下の名前のファイルがいくつかあります:

file1, A.ext  
file1, The.ext  

名前を変更する必要があります

A file1.ext  
The file1.ext

つまり、カンマを消して冠詞を最後から先頭に移動する必要があります。どうすればいいでしょうか?

名前変更コマンドについて調べてみましたが、Perl 正規表現の経験がないので、機能しないこのばかげたコマンドを思いつきました。自分の絶望を示すために残しておきます:

rename 's/(?<=[A-Z a-z \s]*),\sA//' *

答え1

以下のものが必要です:

rename -n 's/^([^,]*),\s*(.*)\.ext$/$2 $1.ext/' *
  • これは、^([^,]*),ファイル名の先頭から最初のカンマまでの、カンマ以外のすべてに一致します。

  • これは、\s*(.*)\.ext$0 個以上の空白文字の後に任意の文字が続き、 で終わる文字列と一致します.ext

  • および$2はそれぞれおよび$1への後方参照です。(.*)([^,]*)

次のように名前を変更します。

rename(a single file,.ext,  a single file.ext)
rename(a single file, some thing.ext, some thing a single file.ext)
rename(file1, A.ext, A file1.ext)
rename(file1, the.ext, the file1.ext)

P、s:-nテストに使用されるファイルの名前を変更するために削除します。

関連情報