ディレクトリのファイル名を変更できませんMusic/
。
次の名前のリストがあります。
$ ls
01 American Idiot.mp3
01 Articolo 31 - Domani Smetto.mp3
01 Bohemian rapsody.mp3
01 Eye of the Tiger.mp3
04 Halo.mp3
04 Indietro.mp3
04 You Can't Hurry Love.mp3
05 Beautiful girls.mp3
16 Apologize.mp3
16 Christmas Is All Around.mp3
Adam's song.mp3
A far l'amore comincia tu.mp3
All By My Self.MP3
Always.mp3
Angel.mp3
同様に、ファイル名の前のすべての数字を削除したい(拡張子の3を除く)。
最初は、または数字のあるファイルのみを試しましたが、grep
最初のステップでも成功しませんでした。可能になったら実際の名前を変更したいです。find -exec
xargs
grep
私が今試したことは次のとおりです。
ls > try-expression
grep -E '^[0-9]+' try-expression
上記のように正しい結果を得ています。その後、次の手順を試しました。
ls | xargs -0 grep -E '^[0-9]+'
ls | xargs -d '\n' grep -E '^[0-9]+'
find . -name '[0-9]+' -exec grep -E '^[0-9]+' {} \;
ls | parallel bash -c "grep -E '^[0-9]+'" - {}
似ていますが、「ファイル名が多すぎます」などのエラーが発生したり、まったく出力されません。問題は、別のコマンドでorを式として使用する方法がうまくxargs
機能することです。find
ご協力ありがとうございます
ベストアンサー1
数字で始まるディレクトリ内のすべてのファイルを一覧表示するには、
find . -maxdepth 1 -regextype "posix-egrep" -regex '.*/[0-9]+.*\.mp3' -type f
アプローチの問題は、find
ファイルへの相対パスを返しますが、ファイル名自体だけが期待されることです。