2017-03-07 3 views
0

私は、変数番号のグループにまとめられたファイルのフォルダを作成した順に名前を付けました。フォルダー内では、この場合3つのグループの場合、最初の3つのビデオが一緒に属し、4番目と6番目のビデオは一緒になります。コマンドラインを使用して3つのファイル名のこれらのグループに対してコマンドを実行するにはどうすればよいですか?ファイル名のリストをn個の項目のグループに分割して、コマンドラインで各グループのコマンドを実行する方法は?

$ mkvmerge -o newfile.mkv '[' file1.mkv ... filen.mkv ']'

編集:これらは

それがすべてで重要ならば、私は実際のようなコマンドを使用してはmkvmergeを使用してn個のファイルのすべてのグループをマージしたい。具体的に

私は2つのグループに分けたいと言っていた4つのビデオを持っています。最初の2人は一緒に行き、最後の2人は一緒に行く。 次に、投稿/最初の3人は一緒に行く、最後の3人は一緒に行く。私。グループは常に命名された順序に従います。

  • プリ/
    --- 2017-01-03-10-23.mkv
    --- 2017-01-03-10-28.mkv
    --- 2017年1月3日-11-04.mkv
    --- 2017-01-03-11-10.mkv
  • ポスト/
    --- 2017-01-03-08-01.mkv
    --- 2017- 01-03-08-10.mkv
    --- 2017-01-03-08-23.mkv
    --- 2017-01-03-08-59.mkv
    --- 2017-01-03-09-08.mkv
    --- 2017-01-03-09-15.mkv
+0

の引数としてそれらを使用するスレッドの数を制御することができますファイルがありますか?グループ内のファイルは常にレキシカルネイバーになっていますか?アルファベット順に最初の* * *が一緒に、次にアルファベット順に* x *などの順番で並んでいますか? –

+0

はい、正確には、 – Lina

答えて

1

あなたは(一定の大きさの塊の上に特定の操作を実行する場合)ファイルの、そしておそらくユーティリティparallelは興味深いことができます:ここで

find ./post -type f -name "*.mkv" | sort | parallel -P1 -n3 mkvmerge '[' {1} {2} {3} ']' 

は、findコマンドは、最初の関心のファイル結果的にソートされているの名前を識別します。コマンドparallelは、これらのファイルをサイズ3(-n3)のチャンクで処理します。また、-Pオプションで、あなたは例のディレクトリを追加することができ、処理を行う...

1

これは、一度に3つのファイルを取り、mkvmerge

find . -maxdepth 1 -name "*.mkv" | xargs -L 3 -I '{}' mkvmerge '[' {} {} {} ']' 
+0

を編集してください。一度に2ファイル、または4ファイルがある場合は、-Lの後にその番号を表示し、角括弧の間に '{}'の数を変更します。 – Lina

+0

あなたは '... | xargs -n 3 mkvmerge'。 [xargsのマニュアルページ](http://man7.org/linux/man-pages/man1/xargs.1.html)の* bug *セクションも参照してください:* -Lオプションは-Iオプションと互換性がありません[...] * – Socowi

+1

また、 'find'と' xargs'の間で 'sort'を忘れないでください。 – Socowi

関連する問題