Как я могу найти все видеофайлы в своей системе?

Я пытался использовать поиск Файла Линзы Единицы *.* и фильтруя Последним Modified=All, Type=Videos и Size=All, но найденный ничем, хотя я знаю, в моей папке Pictures существуют некоторые.3gp файлы. Я знаю, что у меня есть многочисленные видеофайлы на другом диске, смонтированном в файловой системе также. Я составил список вероятных расширений, и я попробовал многочисленные повторения find команда, использующая их с находкой./-, называет "*.ext"-o (и т.д., и т.д., реклама nauseum) без удачи вообще. Каково решение?

10
задан 5 May 2017 в 09:40

3 ответа

Альтернатива: поиск на файл :

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: Заставляет команду файла производить строки типа пантомимы, а не более традиционные человекочитаемые. Таким образом это может сказать 'текст/плоскость; charset=us-ascii', а не 'текст ASCII'. Для этой опции работать, зарегистрируйте, изменяет способ, которым она обрабатывает файлы, распознанные самой командой (такие как многие типы текстового файла, каталоги и т.д.), и использует альтернативный 'волшебный' файл. (См. раздел FILES, ниже).

<час>

раздел FILES указывает на:

Файлы

/usr/share/misc/magic.mgc Значение по умолчанию составило список волшебства.

/usr/share/misc/magic Каталог, содержащий волшебные файлы по умолчанию.

<час>

file slowwwwwwwwwwwwwwwww, хотя (он откроется, все файлы находят, находит), но имеет преимущество, Вы не должны добавлять все те расширения.

<час>

Используя найдите:

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
14
ответ дан 23 November 2019 в 04:23

Я предполагаю, что это могло быть сделано как 1 лайнер, но это казалось немного громоздким, таким образом, я создал сценарий для простоты запуска и редактирования и назвал его findvids.sh Это - то, что работало на меня.

Примечание: Я не мог покрыть ВСЕ типы видеофайла, но я уверен, что у меня есть большинство из них. Одно существенное исключение является .mkv, как это - целевой формат для проекта, и я надеваю '' t, должен найти файлы, которые были уже обработаны. Должно быть очень просто добавить дополнительные форматы (расширения) сценария для удовлетворения потребностям путем исследования шаблона и корректировки соответственно при поддержании кавычек вначале и конца выражения. Обратите внимание, что файлы, которые у Вас нет разрешения считать, не будут найдены.

#!/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

https://stackoverflow.com/questions/7190565/unix-find-multiple-file-types

4
ответ дан 23 November 2019 в 04:23

В команде find в ответе Elder Geek меня насторожила чувствительность к регистру. Мои устройства, похоже, довольно часто использовали заглавные буквы при съемке видео и т. д. Просто нужно добавить параметр -i в grep, чтобы исправить это:

find /. -type f | grep -iE "\.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$"
0
ответ дан 6 August 2020 в 10:10

Другие вопросы по тегам:

Похожие вопросы: