ターミナルで、異なるファイルでコマンドを複数回繰り返すにはどうすればよいですか?


13

ターミナルでは、ffmpeg2theoraを使用して、特定のディレクトリ内のすべての.MOVファイルを.ogvファイルに変換します。ただし、次は機能しません。

ffmpeg2theora *.MOV

異なるファイルでコマンドを複数回繰り返す良い方法はありますか?

ありがとう!

回答:


20

デフォルトのシェル(bash)を使用する場合、以下を使用できます。

for file in *.MOV; do ffmpeg2theora "$file"; done

5
これはスラッシュなしで動作する可能性が高くなりますfor file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
。–狂気

はい、あなたは絶対に正しいです、私は私の答えを修正しました。
マルセルスティムバーグ

1
また、nocaseglobbashオプションを設定して、小文字、大文字、大文字と小文字が混在するファイル拡張子に一致させることもできます。
-enzotib

ありがとうございました!これまでbashを使用したことはありませんが、本当に便利に見えます。(私が学ぶに行く時間!)
アランC

11

find . -iname '*.mov' -exec ffmpeg2theora '{}' \;

再帰の深さを制限するには、-maxdepth 1前に追加することができます-exec


2
この答えと私の答えの違いを述べるために:findを使用すると、サブディレクトリ内のファイルも検索され、for file in *.MOVソリューションは現在のディレクトリのみを検索します。
マルセルスティムバーグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.