[英]Display file size with find command prior to the paths
我正在尝试找到一种方法来结合使用find
命令显示的结果,例如:
$find /home -name "requirements_*"
/home/cobayo/Obligatorio Test 2/requirements_richard
/home/cobayo/Obligatorio Test 2/requirements_paul
/home/cobayo/Obligatorio Test 2/requirements_george
/home/cobayo/Obligatorio Test 1/Subdirectorio/requirements_joe
所以在这里,我得到了要查找的文件的所有路径,我想做的就是获取在路径之前列出的文件大小。 例如:
34K "/home/cobayo/Obligatorio Test 2/requirements_richard"
我有一些命令,即使是一个小脚本也可以显示文件大小。
例如,这一个:
find /home -name "requirements_*" -mtime -1 -print0 | du --files0-from=- -hc |
tail -n1*
并显示所有文件的总大小,并以名称作为参数给出结果。
但是然后,我也有了这个小脚本:
FILENAME=$1
FILESIZE=$(stat -c%s "$FILENAME")
echo "Size of $FILENAME = $FILESIZE bytes."
当我在特定文件的K中获得文件时,这是完美的。 我试图使用列表将它们混合在一起:
*for i in `find /home -name "requirements_*"`
do
echo `stat -c%s $i`
done*
但是我没有得到我正在寻找的结果,实际上它告诉我文件不存在:(
您可以使用-exec du -hs {} \\;
:
$ find -type f -exec du -hs {} \;
4.0K ./proj-2/README.md
4.0K ./proj-2/file.c
4.0K ./proj-2/file.h
或者,如果您的find
支持它:
find -type f -exec du -hs {} +
仅一次调用du
。
或-printf
带有%k
格式参数,用于以kB为单位的大小:
$ find -type f -printf '%kK\t%p\n'
4K ./proj-2/README.md
4K ./proj-2/file.c
4K ./proj-2/file.h
手册参考:
如果您不将变量$i
放在double quotes
之间,则空格将被解释为分隔符,并且您的命令将尝试独立分配以下文件:
/home/cobayo/Obligatorio
Test
1/Subdirectorio/requirements_joe
/home/cobayo/Obligatorio
Test
2/requirements_richard
/home/cobayo/Obligatorio
Test
2/requirements_paul
/home/cobayo/Obligatorio
Test
2/requirements_george
是什么给您带来错误: 文件不存在
你可以试试:
find . -name "requirements_*" -print0 | xargs -0 -I {} bash -c "echo -n 'Size of {} = ' && stat -c%s '{}' | tr -d '\n' && echo ' bytes.'"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.