Имена индексов всех файлов в файле простого текста

Обычно эта информация обрабатывается в 2 местах:

  • Приложение .desktop файлы рекламирует то, что может открыть программа
  • База данных MIME, которая указывает, какое приложение должно использоваться для открытия файла с определенным MIME

База данных MIME может быть настроена путем редактирования .local/share/applications/mimeapps.list и .local/share/applications/mimeinfo.cache. Инструмент, который позволяет редактировать его, xdg-mime от x11-misc/xdg-utils. Остерегайтесь, тот человек заявляет, что это может использоваться только из настольной сессии.

Редактирование Обратите внимание на то, что некоторые приложения, как Firefox, не уважает настройки базы данных MIME.

2
26.01.2012, 09:48
2 ответа

Избегать использования ls, шарики удара могут сделать это лучше

printf '%s\n' *.jpg >output_file
5
27.01.2020, 21:57
  • 1
    Почему удар globbing лучше, чем использование ls? –  Sjoerd 26.01.2012, 10:18
  • 2
    Если Вы просто хотите распечатать список, ls хорошо. Но если Вы хотите обработать файлы, шарик лучше: for file in * будет работать на файлы с пробелами на их имена, в то время как ls | while read file не будет. –  choroba 26.01.2012, 10:58
  • 3
    @choroba. Я полностью выступаю за удар использования globbing здесь, но можно легко добраться ls обработать несколько пробелов в имени файла при помощи IFS=$'\n'. Да, это - больше стычки, но это не выставочный стопор для ls. Основное ограничение с выводом от ls это, это не может легко обработать \n в именах файлов кроме через -b опция (печатают восьмеричные Escape для неграфических символов), который делает ее довольно непрактичной по сравнению с использованием globbing... Задумайтесь о нем: когда имя файла действительно имеет \n в нем, затем возможно, ls -b easiset путь к hanlde это в выходном файле. –  Peter.O 26.01.2012, 13:01
  • 4
    хорошо, ls непечатаемые символы записей, 'как', когда вывод отправляется в канал (я был введен в заблуждение от терминального вывода). Однако ls дальнейший процесс должен запуститься, и я стараюсь избегать его, когда это возможно. –  enzotib 26.01.2012, 13:28
  • 5
    , это может быть сделано рекурсивно? –  Oxwivi 26.01.2012, 18:35

Я предпочел бы find ls. С находкой можно указать много опций, таких как глубина каталога (минута и макс.), получить доступ/изменить ко времени, использовать регулярные выражения и многое другое. Взгляните на страницу справочника находки.

runejuhl@lapaz:~/Pictures$ find . -iname '*.jpg'|head
./2011/03/09/CIMG9447.JPG
./2011/03/09/CIMG9445.JPG
./2011/03/09/CIMG9444.JPG
./2011/03/09/CIMG9442.JPG
./2011/03/09/CIMG9443.JPG
./2011/03/09/CIMG9440.JPG
./2011/03/09/CIMG9441.JPG
./2011/03/09/CIMG9446.JPG
./2011/06/26/CIMG9512.JPG
./2011/06/26/CIMG9585.JPG

runejuhl@lapaz:~/Pictures$ find . -maxdepth 2 -iname '*.jpg' |head
./Webcam/2012-01-10-120822.jpg
./Webcam/2010-11-08-192524.jpg
./Webcam/2012-01-10-170146.jpg
./Webcam/2012-01-10-120928_4.jpg
./Webcam/2012-01-10-120835_4.jpg
./Webcam/2012-01-10-120928_3.jpg
./Webcam/2012-01-10-120828.jpg
./Webcam/2012-01-10-120928_2.jpg
./Webcam/2012-01-10-120945_1.jpg
./Webcam/2012-01-10-120945_2.jpg

Для получения только имени файла можно использовать -printf аргумент:

- формат printf

Верный; формат печати на стандартном выводе, интерпретируя \' escapes and%' директивы. Ширина поля и точность могут быть указаны как с printf' C function. Please note that many of the fields are printed as %s rather than %d, and this may mean that flags don't work as you might expect. This also means that the-' флаг действительно работает (он вынуждает поля быть выровненными по левому краю). В отличие от этого - печать,-printf не добавляет новую строку в конце строки.

(посмотрите на страницу справочника для получения дополнительной информации),

Для печати только имени файла Вы использовали бы printf с "%f":

runejuhl@lapaz:~/Pictures$ find . -maxdepth 2 -iname '*.jpg' -printf '%f\n' |head
2012-01-10-120822.jpg
2010-11-08-192524.jpg
2012-01-10-170146.jpg
2012-01-10-120928_4.jpg
2012-01-10-120835_4.jpg
2012-01-10-120928_3.jpg
2012-01-10-120828.jpg
2012-01-10-120928_2.jpg
2012-01-10-120945_1.jpg
2012-01-10-120945_2.jpg

При использовании xargs и передаче имени файла таким образом, это могла бы быть хорошая идея использовать "%f\0" и xargs -0 использовать пустые разделители.

Когда Вы чувствуете себя подобно ему, взглянули на -print0 аргумент и очень хороший взгляд на xargs или параллель

0
27.01.2020, 21:57
  • 1
    Действительно ли возможно только получить и сохранить названия файлов минус каталог? –  Oxwivi 27.01.2012, 09:38
  • 2
    Да, без проблем. Можно использовать <код> - тип </код> аргумент для определения который типы. (Я просто считал вопрос снова, это не то, что Вы ищете. Я обновлю свой ответ позже сегодня.) –  runejuhl 28.01.2012, 11:42

Теги

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