Я пытался использовать поиск *.*
и фильтрацию файлов объектива Unity по Last Modified = All, Type = Videos и Size = All, но ничего не нашел, хотя знаю, что в моей папке Pictures есть файлы .3gp. Я знаю, что у меня есть множество видеофайлов на другом диске, также смонтированном в файловой системе. Я составил список вероятных расширений и попробовал множество итераций find
команды, используя их с find ./ -name "* .ext" -o (и т. Д. И т. Д., Nauseum), но безуспешно. Каково решение?
11
Ответы:
Альтернатива: поиск по файлу :
или если вы хотите только имена файлов ...
-N, --no-pad
: Не дополняйте имена файлов-i, --mime
: Заставляет команду file выводить строки типа mime, а не более традиционные для человека. Таким образом, он может сказать «текст / обычный; charset = us-ascii ', а не' ASCII text '. Чтобы эта опция работала, файл изменяет способ обработки файлов, распознаваемых самой командой (например, многих типов текстовых файлов, каталогов и т. Д.), И использует альтернативный «магический» файл. (См. Раздел «ФАЙЛЫ» ниже).Раздел ФАЙЛЫ указывает на:
file
хотя и медленный, но откроет все найденные файлы, но имеет то преимущество, что вам не нужно добавлять все эти расширения.Используя locate:
источник
Я полагаю, что это можно сделать как 1-строчную строку, но это выглядело немного громоздко, поэтому я создал скрипт для простоты запуска и редактирования и назвал его.
findvids.sh
Это то, что мне помогло.Примечание. Возможно, я не охватил ВСЕ типы видеофайлов, но уверен, что большинство из них у меня есть. Одним заметным исключением является .mkv, так как это целевой формат для проекта, и мне не нужно находить файлы, которые уже были обработаны. Должно быть очень просто добавить дополнительные форматы (расширения) в сценарий в соответствии с вашими потребностями, изучив шаблон и изменив его соответствующим образом, сохранив кавычки в начале и конце выражения. Обратите внимание, что файлы, у которых нет разрешения на чтение, не будут найдены.
Редактирование на основе комментариев:
$
в конце означает расширение, термин поиска должен быть найден в конце строки. если бы мы хотели сопоставить начало строки, вместо этого мы использовали бы^
раньше термина, который намеревались сопоставить. Вы можете найти эти якоря, объясненные более подробно здесь.Я сделал сравнение скорости с использованием locate, и результаты были:
против
Неожиданно найти быстрее. Я буду использовать этот подход.
Изменить: дальнейшее тестирование показывает, что поиск был быстрее на другом компьютере. Я думаю, что мои начальные результаты теста скорости были ложными из-за кеширования.
Источники:
man find
man grep
/programming/7190565/unix-find-multiple-file-types
источник
touch hello.mp4
не создает видеофайл>: - D, и вы можете изменить его на,locate
чтобы ускорить его.touch
Однако, так как это не было сделано в этой системе, это не очень уместно в этом случае. Что касается локации, мне нужно было бы запуститьupdatedb
до того, чтобы получить текущие данные, не так ли?