フォルダ内のすべてのファイルに対してコマンドを実行するforループ

フォルダ内のすべてのファイルに対してコマンドを実行するforループ

多くのオーディオファイルを含むフォルダがあるとしましょう。audioname.mp3フォルダ内のすべてのファイルに対してこれらのコマンドを実行するためにforループを作成する方法:

convert -size 300x200   xc:lightblue  -font Bookman-DemiItalic  -pointsize 40  -fill blue  -gravity center -draw "text 0,0 'audioname'" audioname.png
ffmpeg -i audioname.png -i audioname.mp3 audioname.flv

ベストアンサー1

for file in ~/Main_dir/*.mp3; do
    convert -background lightblue -size 300x200 -fill blue  -pointsize 40 -gravity center label:"$(basename "$file" .mp3)" "${file%.*}.png";
    avconv -i "${file%.*}.png" -i "${file%.*}.mp3" "${file%.*}.flv";
done

最初の説明変化コマンドの表示AskUbuntuに対する私の答え

説明する$(basename "$file" .mp3)

このコマンドを使用して拡張子を持つ$(basename "$file")ファイル名のみを取得しようとしましたが、$(basename "$file" .mp3)その拡張子も削除しました。

$ for file in ~/Main_dir/*.mp3; do echo $(basename "$file" .mp3);done
039 - Del Nevesht - noraei
Eluveitie - Meet The Enemy

$ for file in ~/Main_dir/*.mp3; do echo $(basename "$file");done
039 - Del Nevesht - noraei.mp3
Eluveitie - Meet The Enemy.mp3

説明する${file%.*}

拡張子なしでフルファイルパスを取得するには、これを使用します。

$ for file in ~/Main_dir/*.mp3; do echo "${file%.*}" ;done
/home/username/Main_dir/039 - Del Nevesht - noraei
/home/username/Main_dir/Eluveitie - Meet The Enemy

スクリプトの次の行は、生成した.pngタグを.mp3ファイルに追加します。

メモ:avconv代わりに使用します。まだパッケージをインストールしてffmpegいない場合はffmpegこれを使用できます。

デモ変換を見る

おすすめ記事