ディレクトリ内の特殊文字とスペースを含むすべてのファイルの名前を変更するには?

ディレクトリ内の特殊文字とスペースを含むすべてのファイルの名前を変更するには?

ファイル名にスペースと特殊文字($と@)を含む特定のディレクトリ内のすべてのファイル名を変更するには?

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' *

おすすめ記事