Як я можу знайти всі відеофайли у своїй системі?


11

Я спробував використати пошук файлів об'єктивів об'єднання для пошуку *.*та фільтрування за допомогою Last Modified = All, Type = Відео та Розмір = All, але нічого не знайшов, хоча я знаю, що в моїй папці "Pictures" є кілька .3gp файлів. Я знаю, що у мене є численні відеофайли на іншому диску, встановленому у файловій системі. Я склав список ймовірних розширень і спробував численні ітерації findкоманди, що використовує ці знахідки /. Яке рішення?


Я не пробував цього, але була стаття про OMG! Ubuntu про додаток FSearch. Ви можете перевірити це. omgubuntu.co.uk/2016/10/fsearch-fast-file-search-tool-linux
Jo-Erlend Schinstad

@ Jo-ErlendSchinstad Дякую за пропозицію, але оскільки я отримую результати через CLI за 3 секунди, я задоволений таким підходом. Я хоч на це погляну. :-)
Старійшина Гік

Але якщо ви не зрозумієте команду, ви її забудете. І якби ви зрозуміли команди, ви б не ставили запитання. Давайте покращимо Ubuntu, полегшивши роботу тим, хто просто хоче виконати роботу. Це можна зробити, додавши програми або вказуючи людей на вже наявні додатки.
Жо-Ерленд Шінстад

@ Jo-ErlendSchinstad Мені часто не вистачає розуміння, яке я отримую за допомогою досліджень та аналізу. Я вважаю, що цей підхід є життєво важливим для розвитку. Процес відкриття привів мене до рішення, яке я вирішив поділитися тут, коли я створив сценарій і розмістив його в ~ / bin, я навряд чи забуду і знаю, де шукати, якщо це зробити. Оскільки це також є в моїй відповіді, кожен, хто має мотивацію, може розібратися і зрозуміти це також.
Старійшина Гік

Ти правий. Насправді нам не потрібні настільні комп’ютери. Ми можемо зробити майже все, використовуючи командні рядки. Але якщо ми хочемо рости, ми повинні усвідомити, що більшість людей не хочуть вчитися подібному. Я знаю розробників, які навіть не можуть описати відмінності між стеком і купою.
Жо-Ерленд Шінстад

Відповіді:


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: Викликає команду файлу виводити рядки типу mime, а не більш традиційні для людини читати. Таким чином, він може сказати "текст / звичайний; charset = us-ascii ', а не текст ASCII. Для того, щоб ця опція працювала, файл змінює спосіб обробки файлів, розпізнаних самою командою (наприклад, багато типів текстових файлів, каталогів тощо), і використовує альтернативний "магічний" файл. (Див. Розділ "ФАЙЛИ" нижче).


У розділі "ФАЙЛИ" вказується на:

Файли

/usr/share/misc/magic.mgc За замовчуванням складений список магії.

/usr/share/misc/magic Каталог, що містить файли магії за замовчуванням.


file Хоча це повільно wwwwwwwwwwwwwwwww (він відкриє всі файли, які знаходять знахідки), але має перевагу, що вам не потрібно додавати всі ці розширення.


Використовуючи пошук:

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

Який "ФАЙЛ розділ, внизу"
Старійшина Гек

додано! це було приховано на сторінці чоловіка: D
Rinzwind

Це дивно, я б очікував, що пошук стане швидшим, але за допомогою вашої команди locate я отримую час: реальний 0m8.985s і за допомогою команди find я отримую час: реальний 0m2.595s
Elder Geek

1
О ... знайдіть всі файли. Ваша знахідка - там, де ви є, чи не так?
Rinzwind

Я додав перемикач -e, який не мав особливого впливу, але повернення результатів для вже втрачених файлів не здалося корисним. Наданий час для системи набагато менший для пошуку, але реальний час на результати - це все, що мені дуже важливо.
Старійшина Гік

5

Я думаю, це можна зробити як 1-лайнер, але це здавалося трохи громіздким, тому я створив сценарій для зручності запуску та редагування і назвав це. findvids.shЦе те, що працювало для мене.

Примітка: я, можливо, не охоплював ВСІ типи відеофайлів, але я впевнений, що у мене є більшість. Одне помітне виняток - .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

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

/programming/7190565/unix-find-multiple-file-types


touch hello.mp4не створює відеофайл>: - D, і ви можете змінити його, locateщоб пришвидшити його.
Rinzwind

@Rinzwind Дійсний пункт щодо touchОднак, оскільки цього не було зроблено в цій системі, це не дуже актуально в цьому випадку. Що стосується місця знаходження, я б тоді мав запуститись updatedbдо того, щоб мати поточні дані, чи ні?
Старійшина Гік

Так, updateb робиться щодня, тому якщо ви можете припустити, що вам не потрібно тривати декілька годин (швидкість повернення результатів на величину вища, ніж при знаходженні: D)
Rinzwind

@Rinzwind Я хотів би побачити робочий приклад цього за допомогою locate.
Старійшина Гік

додано локацію.
Rinzwind
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.