この find コマンドが機能しないのはなぜですか? .mp3、.wav、および.m4aファイルを見つけるための正規表現とバリアント

この find コマンドが機能しないのはなぜですか? .mp3、.wav、および.m4aファイルを見つけるための正規表現とバリアント
2015.10.25 Move on and Be Blessed.wav             dummy.m4a
2015.11.17 BS Full.wav.mp3                        
2015.11.17 BS MOL.wav.mp3           

find . -name '*.mp3' -o -name '*.wav' -o -name '*.m4a' -print0

しかし、このコマンドは機能します find . -name "*.wav" -o -name '*.mp3' -print0

私は読んでいた find コマンドを使用して複数の拡張子を検索する方法そして neroAacEncを使用してサブディレクトリ内のすべての.wavファイルを.aacに変換するには?

私の正規表現バージョンが機能しないのはなぜですか? find . -regex '*\.\(.mp3\|.wav\|.m4a\)' -print0 この正規表現コマンドを2番目の参照記事で説明されている後続のコマンドにパイプして、find . -name "*.wav" -print0 | while read -d $'\0' file; do ffmpeg -i "$file" -c:a libfdk_aac -vbr 3 output.m4a "${file%wav}m4a"; doneそのfind . -name "*.wav" -print0コマンドを置き換えることはできますか?

ベストアンサー1

あなたの質問に始めが欠けているようですが、find-regexコマンドが機能しないのは、.*(「何でも」のglob構文)だけでなく*(「何でも」の正規表現構文)で始める必要があるからです。.Extensionの前に不要なものがあります。

find . -regex '.*\.\(mp3\|wav\|m4a\)' -print0

パイプラインは正しく機能します。echoそれを前に配置してテストしてくださいffmpeg。私の本能は、ファイルでテストできる関数やスクリプトを作成するか、ファイルに改行文字がないことを確認することです。スペースはユーザーが好きですが、改行は痛いです。

おすすめ記事