У меня есть структура папок, как это:
/1/a/x
/1/b/y
/2/a/z
/2/b/d
/3/a/r
/3/b/e
Я хочу перечислить файлы + размер файла для всех файлов в подпапках в папках «а». Я пытался использовать поиск, но я застрял. Какой будет правильная команда?
Чтобы напечатать размер и полный путь, попробуйте это.
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/*/*