Обычно эта информация обрабатывается в 2 местах:
База данных MIME может быть настроена путем редактирования .local/share/applications/mimeapps.list
и .local/share/applications/mimeinfo.cache
. Инструмент, который позволяет редактировать его, xdg-mime
от x11-misc/xdg-utils
. Остерегайтесь, тот человек заявляет, что это может использоваться только из настольной сессии.
Редактирование Обратите внимание на то, что некоторые приложения, как Firefox, не уважает настройки базы данных MIME.
Избегать использования ls
, шарики удара могут сделать это лучше
printf '%s\n' *.jpg >output_file
Я предпочел бы 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
или параллель
ls
? – Sjoerd 26.01.2012, 10:18ls
хорошо. Но если Вы хотите обработать файлы, шарик лучше:for file in *
будет работать на файлы с пробелами на их имена, в то время какls | while read file
не будет. – choroba 26.01.2012, 10:58ls
обработать несколько пробелов в имени файла при помощиIFS=$'\n'
. Да, это - больше стычки, но это не выставочный стопор дляls
. Основное ограничение с выводом отls
это, это не может легко обработать\n
в именах файлов кроме через-b
опция (печатают восьмеричные Escape для неграфических символов), который делает ее довольно непрактичной по сравнению с использованием globbing... Задумайтесь о нем: когда имя файла действительно имеет\n
в нем, затем возможно,ls -b
easiset путь к hanlde это в выходном файле. – Peter.O 26.01.2012, 13:01ls
непечатаемые символы записей, 'как', когда вывод отправляется в канал (я был введен в заблуждение от терминального вывода). Однакоls
дальнейший процесс должен запуститься, и я стараюсь избегать его, когда это возможно. – enzotib 26.01.2012, 13:28