Долговременный наблюдатель, в первый раз корреспондент!
Я не могу найти следующее: Я хотел бы сделать текстовый файл, который заполнен именами файлов включая тех в subdir's, их путь и и метаданные (особенно разрешение видео). Все это от консоли.
Я не мог найти что-то подобным, только что-то названный mediainfo, который рядом, но только работает на 1 файл насколько я вижу.
Кто-то мог указать на меня в правильном направлении? Спасибо за внимание!Удачи
И держите руки моего вопроса.
В целом путь каждый принимает управление с 1 аргументом (mediainfo foo
) и применяет его к набору файлов, с find
и xargs
. Посмотрите man find;man xargs
.
Я использую NUL-завершенные опции (-print0
и -0
) потому что Вы не сказали, что никакое имя файла не имело пробелы.
find . -type f -print0 | xargs -0 -n 1 mediainfo
mediainfo
является отличным выбором для получения этой информации. Я бы использовал скрипт, чтобы убедиться, что я получаю нужные результаты в одном файле, а затем повторяю его в нужной области. Вот пример, который я назвал 1linenfo.sh
и поместил в мой каталог ~/bin
:
Как и во всех сценариях, которые вы планируете выполнять, вам придется изменить разрешения на исполняемый файл. в данном конкретном случае это будет chmod +x ~/bin/1linenfo.sh
#! /bin/bash
pfx=$(mediainfo --Inform="General;%CompleteName%" "$1")
sfx=$(mediainfo --Inform="Video;%Width%x%Height%" "$1")
Title="$pfx $sfx" #build desired line of output
echo "$Title" #output
Вышеприведенная информация включает в себя информацию, которую вы хотите, но вы можете легко добавить больше. Для более подробного выбора выходных данных проверьте выходные данные mediainfo --Info-Parameters
. Вы можете легко использовать find для итерации по желаемой области действия.
find . -type f -exec bash -c '1linenfo.sh "{}"' \;
Если вам нужно перенаправить вывод в файл, вы можете сделать что-то вроде этого:
find . -type f -exec bash -c '1linenfo.sh "{}"' \;>report.txt
Если что-то об этом ответе неясно, оставьте мне комментарий, и я сделаю все возможное, чтобы уточнить.