QNAP Найти с помощью printf - PullRequest
       17

QNAP Найти с помощью printf

0 голосов
/ 02 октября 2019

Я пытаюсь printf в конкретный формат (путь к файлу и дату последнего изменения) для целей архивирования, но возникают проблемы с поиском в QNAP под управлением BusyBox v1.24.1.

find . -type f -mtime -1825 -printf "%h%f %TD\n";

Ошибка:

find: unrecognized: -printf

Он не поддерживает printf, поэтому я пытаюсь использовать параметр exec. Со следующим:

find . -type f -mtime -1825 -exec printf "%h%f %TD\n" {} \;

Но теперь я получаю следующую ошибку:

find: printf: Нет такого файла или каталога

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

GNU find -printf используется для отображения атрибутов файлов, а POSIX printf используется для форматирования / преобразования строк. Они не используются для одной и той же вещи и не могут заменять друг друга.

Вместо этого BusyBox имеет stat -c, который можно использовать для некоторых из этих вещей:

find . -type f -mtime -1825 -exec stat -c '%n %y' {} \;

Обратите внимание, что при наличии одной и той же информации она форматируется по-разному.

0 голосов
/ 02 октября 2019

Команда printf встроена в оболочки (согласно спецификации POSIX) и не является внешней утилитой. Вы можете использовать его с -exec, создавая оболочку:

find . -type f -mtime -1825 -exec sh -c 'printf "%h%f %TD\n" $1' sh {} \;
...