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

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

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

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

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

решение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/*/*

Связанный контент