我有一个这样的文件夹结构:
/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 范围内的单个数字的名称;*
如果您的示例与您试图描述的现实不完全对应,也许可以将其扩展为或进行更受限制的操作。
GNUfind
应该是 CentOS 的标准,但如果您需要适当可移植的代码,也许可以使用find ... -exec stat {} \;
(但请注意,它stat
也存在可移植性问题;该命令应该存在于大多数平台上,但如何确切地让它打印特定内容因实现而异)。另一个选择是,find ... -ls
但你会面临解析ls
。
如果您不需要遍历子目录,则不需要find
。
stat -c '%s %n\n' /[123]/a/*/*