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