
以下の名前のファイルがいくつかあります:
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
テストに使用されるファイルの名前を変更するために削除します。