システム上のすべてのビデオファイルを検索するにはどうすればよいですか?


11

Unity Lens File検索を使用して、*.*Last Modified = All、Type = Videos、およびSize = Allでフィルタリングしようとしましたが、Picturesフォルダーにいくつかの.3gpファイルがあることはわかっていますが、何も見つかりませんでした。ファイルシステムにマウントされた別のドライブにも多数のビデオファイルがあることは知っています。可能性のある拡張機能のリストをまとめ、findfind ./ -name "* .ext" -o(etc、etc、ad nauseum)でこれらを利用してコマンドを何度も試行しましたが、まったく運がありませんでした。解決策は何ですか?


まだ試していませんが、OMGに関する記事がありました。FSearchアプリに関するUbuntu。ぜひチェックしてみてください。omgubuntu.co.uk/2016/10/fsearch-fast-file-search-tool-linux
Jo-Erlend Schinstad 2016年

@ Jo-ErlendSchinstad提案ありがとうございます。CLI経由で3秒以内に結果が得られたので、このアプローチに満足しています。私はそれを見ていきます。:-)
オタク長老

しかし、コマンドを理解しないと、コマンドを忘れてしまいます。そして、コマンドを理解していれば、質問はしなかったでしょう。仕事をやりたいだけの人のために物事を簡単にすることでUbuntuを改善しましょう。そのためには、アプリを追加するか、既に存在するアプリをユーザーに示します。
Jo-Erlend Schinstad 2016年

@ Jo-ErlendSchinstad研究や分析を通じて得た理解が不足しがちです。このアプローチは開発に不可欠だと思います。発見プロセスのおかげで、スクリプトを作成して〜/ binに配置したため、ここで共有することを選択したソリューションにたどり着きました。私の答えにも含まれているので、やる気のある人なら誰でも解析して理解できます。
オタク長老

あなたが正しい。実際にはデスクトップは必要ありません。コマンドラインを使用して、ほぼすべてのことを実行できます。しかし、成長したければ、ほとんどの人はそのようなことを学びたくないと気づかなければなりません。スタックとヒープの違いさえ説明できない開発者を知っています。
Jo-Erlend Schinstad

回答:


14

代替:ファイルを検索:

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 '。このオプションが機能するために、fileは、コマンド自体によって認識されるファイル(テキストファイルタイプ、ディレクトリなどの多く)の処理方法を変更し、代替の「マジック」ファイルを利用します。(下記の「ファイル」セクションを参照してください)。


FILESセクションは以下を指します。

ファイル

/usr/share/misc/magic.mgc マジックのデフォルトのコンパイル済みリスト。

/usr/share/misc/magic デフォルトのマジックファイルを含むディレクトリ。


file ただし、wwwwwwwwwwwwwwwwは低速ですが(検索結果のすべてのファイルが開きます)、これらの拡張機能をすべて追加する必要がないという利点があります。


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

どの「下のファイルセクション」
ギーク長老

追加!manページに隠されていました:D
Rinzwind

奇妙なことに、locateの方が高速だと思っていましたが、locateコマンドでtime:real 0m8.985sを取得し、findコマンドでtime:real 0m2.595s
Elder Geek

1
Oh ... locateはすべてのファイルを処理します。あなたの発見はあなたがどこから来たのですか?
Rinzwind 2016年

あまり影響を与えなかった-eスイッチを追加しましたが、既に存在しないファイルの結果を返すことは役に立たないようです。許可されたsys時間は、ロケートの方がはるかに短いですが、結果を得るまでの時間は、私が本当に気にかけているすべてです。
オタク長老

5

これは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


touch hello.mp4>:-Dのビデオファイルは作成されませんlocate。スピードを上げるために変更することもできます。
Rinzwind 2016年

@Rinzwindに関する重要なポイントtouchただし、このシステムではこれが行われていないため、この場合はあまり関係ありません。ロケートに関する限り、updatedb現在のデータを取得するために実行する前に実行する必要がありますか?
ギーク長老

はい、updatedbは毎日行われるため、数時間
続ける

@Rinzwindこの機能の実例をlocateを使って見たいです。
オタク長老

ロケートを追加しました。
Rinzwind 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.