私は進歩を遂げていますが、ここからどのように続けるべきかわかりません。inotifywait
(デーモン)スイッチを使って-d
ウォッチフォルダに入れたビデオファイルを一覧表示したファイルを出力します。
ボリュームレベルを調整して再エンコードするのに時間がかかり、イベントを見逃したくないので、このリストが必要です。私の質問は、実際にデータをzsh
スクリプトで使用できるものとして操作する方法です。各行に次の形式を使用してください。
/path/to/file containing/white spaces/ CLOSE_WRITE,CLOSE file name with white spaces
私に必要なのは
/path/to/file\ containing/white\ spaces/filename\ with\ white\ spaces.extension
パスが変更され、サブフォルダーレベルの数が変更され、ファイル名が変更されます。一貫しています** CLOSE_WRITE,CLOSE **
(前に1つ、後ろに1つ)。誰かがスクリプトからこの行を削除する方法を私に喜んで教えてくれたらzsh
(実際には)残りの部分を追加するのに十分なことを知っていると思います。バックスラッシュバーを使用してスペースを追加し、コマンドラインとVim
私が見たコードスニペットを使用する必要がなくなったら、その行を削除します。
私はすでに必要なほとんどを持っています。実際、何時間も自動的にファイルを変換するスクリプトを作成しました。またはボリュームレベルを調整するには、これらのファイルをすべて1つにまとめる必要があります(起動時に変換されていないファイルを確認する計画もあります。ただし、コンピュータは引き続き実行されたままにします。少なくともデスクトップを修正し、並列処理方法を学ぶまで可能です。しかし、そのようなことは後ですべて起こります。
すべての助けに感謝します。
答え1
--format
このオプションは利用可能ですinotifywait
出力形式を変更します。ファイルが閉じられたときにのみファイル名が印刷され、イベントタイプは印刷されません。
inotifywait -eclose_write -m --format "%w%f" -q /path/to/target/dir
Cスタイルのエスケープ()をサポートしていないよう\0
で、各イベントの最後に改行を印刷する必要があると主張しているので、ファイル名に改行が含まれていないことを願っています。
答え2
からman parallel
:
例: ディレクトリハンドラとしての GNU Parallel
ユーザーが処理を必要とするファイルを置くことができるディレクトリがある場合は、GNU / Linuxでこれを行うことができます(他のプラットフォームでinotifywaitを呼び出すことがわかっている場合はバグレポートを送信してください)。
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f my_dir |\ parallel -u echo
これにより、my_dirまたはmy_dirのサブディレクトリにあるすべてのファイルに対してechoコマンドが実行されます。
もちろん、-Sを使用してリモートシステムにジョブを配布できます。
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f my_dir |\ parallel -S .. -u echo
これはあなたがしたいことに非常に近いようです。
GNUパラレルを学ぶには、「man parallel」で始まる「読者ガイド」に従ってください。