正規表現を使用して名前を変更したファイルのハンドルを取得するには?

正規表現を使用して名前を変更したファイルのハンドルを取得するには?

正規表現を使用してファイル名を変更しています。

f='/path/to/file'
rename 's/(^.*)([ab])(.*)([cd])(.*$)/$1$4$3$2$5/s' "$f"

それでは、名前を変更する必要があるかどうかわからない場合は、作業できるように名前が変更されたファイルへのハンドルをどのように取得できますか?

ベストアンサー1

renamePerl式(より正確には置換)を提供しています。式を割り当てる代わりに、renamePerl を使用して式を評価し、ファイルを移動します。

f='/path/to/file'
newname=$( perl -pe 's/(^.*)([ab])(.*)([cd])(.*$)/$1$4$3$2$5/s' <<<"$f" )

printf 'New name is "%s"\n' "$newname"
mv -- "$f" "$newname"

あるいは、式を使用して新しい名前を出力し、次からキャプチャすることもできますrename

f='/path/to/file'
newname=$( rename 's/(^.*)([ab])(.*)([cd])(.*$)/$1$4$3$2$5/s; print "$_\n"' "$f" )

printf 'New name is "%s"\n' "$newname"

renameこれはPerlベースのモジュールを使用していると仮定しますFile::Rename

おすすめ記事