Объяснение директив% в find -printf

20
find /tmp -printf '%s %p\n' |sort -n -r | head

Эта команда работает нормально, но какие %s %pпараметры используются здесь? Есть ли другие варианты, которые можно использовать?

Sand1512
источник
4
Взгляните на справочную страницу find.
Сайрус

Ответы:

25

Какие параметры% s% p используются здесь?

Со страницы руководства :

% s Размер файла в байтах.

% p Имя файла.

Прокрутите вниз на этой странице за пределы всех обычных букв для printf и прочитайте части, которые идут с префиксом%.

% n Количество жестких ссылок на файл.

% p Имя файла.

% P Имя файла с именем начальной точки, под которой оно было найдено, удалено.

% s Размер файла в байтах.

% t Время последнего изменения файла в формате, возвращаемом функцией C `ctime '.

Есть ли другие варианты, которые можно использовать?

Есть. Смотрите ссылку на справочную страницу.

Hennes
источник
@don_crissti Я никогда не пойму, почему люди предпочитают случайную веб-документацию документации, установленной в их системах (что имеет дополнительное преимущество, потому что на самом деле имеет отношение к их системе).
Кусалананда
1
@Kusalananda - Ну, я могу вспомнить один сценарий, в котором люди добавили бы ссылку на веб-страницу вместо цитаты из документации, установленной в их системе: они не были на машине с Linux во время написания поста. .. Однако, ссылка должна указывать (imo) на официальные документы (отсюда мой комментарий выше, который по неизвестной причине был удален модами ...). Кроме того, я полностью согласен с вами: ОП следует обратиться к странице руководства, установленной в их системе.
don_crissti
2
@don_crissti Или они находятся на сервере, на котором не установлены man-страницы, что довольно часто.
runlevel0
Моя страница руководства, как правило, из FreeBSD. Если у меня нет виртуальной машины Linux в пределах досягаемости. И у меня сложилось впечатление, что большинство вопросов основано на GNU / Linux.
Hennes
3
Я должен также добавить, что в дополнение к ошеломляющему и часто непостижимому выводу man-страниц для относительно неопытных пользователей, как программист / опытный пользователь, я обычно ищу новые решения, которые не охватывают man-страницы. Например (только сейчас), конкретный формат даты для вывода команды 'find'. Страница man не говорит вам ставить "% T" перед каждой переменной - по крайней мере, я не нашел, что искал это специально. Вы могли бы провести весь день, пытаясь понять это. (Или просто дать.) В то время как поиск в Stack Exchange даст этот ответ, четко объясненный, в первом результате.
Джим
0

Барретт 2012 говорит на странице 74:

-printfstring msgstr " напечатать заданную строку, к которой могут быть применены подстановки, в виде функции библиотеки C printf()".

и рекомендует, конечно, справочную страницу для полного списка опций. В то время как такие вещи find . -printf '%s %p\n'получают объяснение, другие нет. @jimупомянул использование %T. Я лично использую сценарий со строкой, похожей на find . -printf '%T@ %p\n'ту, что я никогда не смог понять, что это %T@такое. Кто-нибудь может сослаться на поясняющий источник для этих опций, не найденных в manpages?

choklo
источник
1
Кто этот парень Барретт?
Кусалананда
@Kusalananda, Даниэль Дж. Барретт, автор «Linux Pocket Guide», ссылка на страницу относится ко второму изданию. Прежде чем бегать в библиотеку, имейте в виду, что решение этого вопроса не находится там. В противном случае очень хороший гид.
Чокло