これは1ライナーとして実行できると想像しますが、少し面倒に思えたので、起動と編集を簡単にするためのスクリプトを作成し、それを呼び出しfindvids.sh
ました。これが私にとってうまくいきました。
注:すべてのビデオファイルタイプを網羅しているわけではありませんが、それらのほとんどを使用していると確信しています。1つの注目すべき例外は.mkvです。これはプロジェクトのターゲット形式であり、すでに処理されたファイルを見つける必要がないためです。パターンを調べ、式の最初と最後の引用符を維持しながら適宜調整することで、ニーズに合わせてスクリプトにフォーマット(拡張子)を追加するのは非常に簡単です。読み取り権限のないファイルは見つからないことに注意してください。
#!/bin/bash
#This script is intended to find virtually all video file formats.
find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp*$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
コメントをもとに編集:$
検索用語は、行の最後に見つけなければならないという拡張子が意味の終わりに。行の先頭と一致させたい場合は、一致さ^
せる用語の前に使用します。これらのアンカーについては、こちらで詳しく説明しています。
私はロケートを使用する速度比較を行い、結果は次のとおりでした:
time locate *.mkv *.webm *.flv *.vob *.ogg *.ogv *.drc *gifv *.mng *.avi *.mov *.qt *.wmv *.yuv *.rm *.rmvb *.asf *.amv *.mp4$ *.m4v *.mp *.m?v *.svi *.3gp *.flv *.f4v
real 0m8.887s
user 0m5.814s
sys 0m0.052s
対
time find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp4$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
real 0m2.795s
user 0m0.657s
sys 0m1.115s
予期せず検索が高速です。このアプローチを使用します。
編集:さらなるテストにより、別のマシンでの検索の方が高速であったことが示されています。私の最初の速度テストの結果は、キャッシュのために二段になっていたと思います。
出典:
man find
man grep
/programming/7190565/unix-find-multiple-file-types