スペースを含むディレクトリ名の一括変更

スペースを含むディレクトリ名の一括変更

スペース(各ファイル名に複数)を含むファイルとディレクトリが複数あり、それらを削除しようとしています。私はrename正規表現を理解していない「愚かさ」に閉じ込められています。これまで、私は次のように終わりました。

find . -maxdepth 1 -type d -print0 | perl -pe 'print $_; s/\s+/_/g' | xargs -n 2 -0 mv

findこれをPerl正規表現の力と組み合わせたいと思います(現在は最初のレベルのディレクトリの名前だけを変更したいです。xargsスペースを区切り文字として使用する問題を避けたい)。-print0

正しい方向に進んでいますが(最終的に変更すると必要なものが得られますmvecho、正しく機能しません。

一般的なアドバイスをいただきありがとうございます!

ベストアンサー1

perlすでに次のように新しい名前を生成しているのでrenameperl

find . -maxdepth 1 -type d -print0 | 
 perl -0nE '$o=$_; s/\s+/_/g; rename $o, $_'

/r新しい方法を使用して、次のこともできます。

perl -0nE 'rename $_, s/\s+/_/gr or die "$_: $!\n"'

おすすめ記事