繁体   English   中英

在路径之前使用find命令显示文件大小

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM