2017-04-06 5 views
0

フォルダ内のflacファイルを変換するスクリプトがbashで書かれています。ただし、ファイルが私が呼び出しているフォルダのサブディレクトリにある場合、動作しません。サブディレクトリのすべてのレベルにあるファイルのスクリプトを実行します

例えば、私がflacファイルを直接持っているディレクトリを呼び出すと、スクリプトは正常に動作します。フォルダとflacファイルの間にフォルダがある場合、実行されることはありません。

  • AlbumName/*.flac <は - AlbumName

  • AlbumName/CD1/*.flac <を呼び出すときに正常に動作 - 文句を言わないの実行をここでAlbumName

を呼び出すときに私が使用しているコードです:

for file in "$1"/*.flac 
do 
    if [ -f "${file}" ]; then 

     # do flac conversion script 

    fi 
done 

どのような考えですか?このコマンドがで*.flacと一致するパス.内のすべてのファイル(-type f)を求める

find . -path "*.flac" -type f -exec ./flac_converter.sh "{}" \; 

+0

フラクタル変換には何が必要ですか? 'find'がその仕事をよりうまく処理できるようです。これらの行のなかの何か: 'find。 - 名前 "* $ 1/*。flac" - タイプf - エexflac_conversion {} \; ' – odradek

+0

それは、呼び出されたフォルダからbasenameで新しいフォルダを作成し、フォルダ名の" FLAC "を" V0 "それはMP3コンバータにflacを実行します。 – jakeokeefe

答えて

1

あなたはfindですべて.flacのファイルを取得し、それらの一つ一つにFLAC変換スクリプトを実行することができますが、引数として渡されました文字列の最後に-exec flac_converter.shを実行して、それぞれの一致が{}となるようにします。そのコマンドが生成する実行

$ tree flacs 
flacs 
    ├── asd.flac 
    ├── dsa.flac 
    └── more 
     └── more_asd.flac 

$ find . -path "*.flac" -type f -exec ./flac_converter.sh "{}" \; 
I'm converting ./flacs/asd.flac 
I'm converting ./flacs/dsa.flac 
I'm converting ./flacs/more/more_asd.flac 

flac_converter.shのみ$1(入力としてfindからファイル)とその文をエコー

ので、例えば、私は、このファイル構造を持っている場合。 ./flacs/more/*.flac./flacs/*.flacがスムーズに実行されていることに注意してください。

関連する問題