スペース(各ファイル名に複数)を含むファイルとディレクトリが複数あり、それらを削除しようとしています。私はrename
正規表現を理解していない「愚かさ」に閉じ込められています。これまで、私は次のように終わりました。
find . -maxdepth 1 -type d -print0 | perl -pe 'print $_; s/\s+/_/g' | xargs -n 2 -0 mv
find
これをPerl正規表現の力と組み合わせたいと思います(現在は最初のレベルのディレクトリの名前だけを変更したいです。xargs
スペースを区切り文字として使用する問題を避けたい)。-print0
正しい方向に進んでいますが(最終的に変更すると必要なものが得られますmv
)echo
、正しく機能しません。
一般的なアドバイスをいただきありがとうございます!
ベストアンサー1
perl
すでに次のように新しい名前を生成しているのでrename
:perl
find . -maxdepth 1 -type d -print0 |
perl -0nE '$o=$_; s/\s+/_/g; rename $o, $_'
/r
新しい方法を使用して、次のこともできます。
perl -0nE 'rename $_, s/\s+/_/gr or die "$_: $!\n"'