ファイル名にスペースと特殊文字($と@)を含む特定のディレクトリ内のすべてのファイル名を変更するには?
rename
以下を使用して、すべてのスペースと特殊文字を_に置き換えようとしました。
$ ls -lrt
total 464
-rwxr-xr-x. 1 pmautoamtion pmautoamtion 471106 Jul 17 13:14 Bharti Blocked TRX Report [email protected]
$ rename -n 's/ |\$|@/_/g' *
$ ls -lrt
total 464
-rwxr-xr-x. 1 pmautoamtion pmautoamtion 471106 Jul 17 13:14 Bharti Blocked TRX Report [email protected]
$
コマンドは機能しますが、ファイル名を変更せず、エラーを返しません。この問題を解決する方法とは異なる方法がありますか?
ベストアンサー1
フラグ-n
は
--対処なし
アクションなし:名前が変更されたファイルを表示します。
したがって、何も変更しない場合、これは正常です。
あなたの命令に関して、それは私にとって効果的でした。
$ touch "a @ test"
$ ls
a @ test
$ rename -n 's/ |\$|@/_/g' *
a @ test renamed as a___test
たぶんシェルに応じてエスケープする必要があります。
$ rename -n 's/ \|\$\|@/_/g' *
または、[…]
記号を使用して文字をグループ化することもできます。
$ rename -n 's/[ @\$]/_/g' *