Unityレンズファイル検索で*.*
を使用し、Last Modified = All、Type = Videos、Size = Allでフィルタリングしようとしましたが、Picturesフォルダーに.3gpファイルがあることはわかっていますが、何も見つかりませんでした。ファイルシステムにマウントされた別のドライブにも多数のビデオファイルがあることを知っています。 可能性のある拡張子のリスト をコンパイルし、find ./ -name "* .ext" -o(etc、ad nauseum)でこれらを利用してfind
コマンドの多数の反復を試みました。運がまったくありません。解決策は何ですか?
代替: ファイル で検索:
Sudo find . -type f -exec file -N -i -- {} + | grep video
またはファイル名のみが必要な場合...
Sudo find . -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p'
-N, --no-pad
:ファイル名をパディングしない
-i, --mime
:fileコマンドは、より伝統的な人間が読める形式ではなく、MIMEタイプの文字列を出力します。したがって、「text/plain; 「ASCIIテキスト」ではなくcharset = us-ascii '。このオプションが機能するために、ファイルはコマンド自体(多くのテキストファイルタイプ、ディレクトリなど)によって認識されるファイルの処理方法を変更し、代替の「マジック」ファイルを使用します。 (以下の「ファイル」セクションを参照してください)。
FILESセクションは以下を指します。
ファイル
/usr/share/misc/magic.mgc
マジックのデフォルトのコンパイル済みリスト。
/usr/share/misc/magic
デフォルトのマジックファイルを含むディレクトリ。
file
はslowwwwwwwwwwwwwwwwwです(検出されたすべてのファイルが開きます)が、これらすべてのエクステンションを追加する必要がないという利点があります。
Locateの使用:
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
これは1ライナーとして実行できると思いますが、少し面倒に思えたので、起動と編集を簡単にするスクリプトを作成してfindvids.sh
と呼びました。
注:ビデオファイルの種類については説明していませんALLが、ほとんどの種類があると確信しています。注目すべき例外の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$"
コメントに基づいて編集する:拡張機能の最後にある$
は、検索語が行末になければならないことを示します。代わりに行の先頭を一致させたい場合は、一致する用語の前に^
を使用します。これらのアンカーについて詳しく説明しています こちら
Locateを使用して速度を比較しましたが、結果は次のとおりです。
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
vs.
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
https://stackoverflow.com/questions/7190565/unix-find-multiple-file-types