正規表現を使用してファイル名を変更しています。
f='/path/to/file'
rename 's/(^.*)([ab])(.*)([cd])(.*$)/$1$4$3$2$5/s' "$f"
それでは、名前を変更する必要があるかどうかわからない場合は、作業できるように名前が変更されたファイルへのハンドルをどのように取得できますか?
ベストアンサー1
rename
Perl式(より正確には置換)を提供しています。式を割り当てる代わりに、rename
Perl を使用して式を評価し、ファイルを移動します。
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
。