У меня есть структура папок, как это:

/1/a/x
/1/b/y
/2/a/z
/2/b/d
/3/a/r
/3/b/e

Я хочу перечислить файлы + размер файла для всех файлов в подпапках в папках «а». Я пытался использовать поиск, но я застрял. Какой будет правильная команда?

1 ответ1

1

Чтобы напечатать размер и полный путь, попробуйте это.

find /[123]/a/* -type f -printf '%s %p\n'

Смотрите man find для других форматных строк, которые вы можете использовать с -printf . В частности, вам может потребоваться %P или %f вместо %p и, возможно, %b вместо %s .

[123] соответствует имени, которое является одной цифрой в диапазоне 1-3; возможно, распространите его на * или что-то более ограниченное, если ваш пример не совсем соответствует реальности, которую вы пытаетесь описать.

GNU find должно быть стандартным для CentOS, но если вам нужен правильно переносимый код, возможно, используйте find ... -exec stat {} \; (но обратите внимание, что stat также имеет проблемы с переносимостью; команда должна существовать на большинстве платформ, но как именно заставить ее напечатать что-то конкретное, зависит от реализации). Другой вариант - find ... -ls но тогда вы не сможете разобрать ls .

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

stat -c '%s %n\n' /[123]/a/*/*

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .