du 命令在目录后显示斜杠?

du 命令在目录后显示斜杠?

如何使用du命令在目录后显示斜杠?

例如:

杜 -ab /root/test/php-5.4.8/

结果:

1781    /root/test/php-5.4.8/main/internal_functions.c.in
973596  /root/test/php-5.4.8/main
3841    /root/test/php-5.4.8/netware/start.c
577     /root/test/php-5.4.8/netware/sendmail_nw.h
8514    /root/test/php-5.4.8/netware
4957    /root/test/php-5.4.8/README.TESTING2
4561    /root/test/php-5.4.8/.gitignore

但是我希望目录包含尾部斜杠,例如:

1781    /root/test/php-5.4.8/main/internal_functions.c.in
973596  /root/test/php-5.4.8/main/
3841    /root/test/php-5.4.8/netware/start.c
577     /root/test/php-5.4.8/netware/sendmail_nw.h
8514    /root/test/php-5.4.8/netware/
4957    /root/test/php-5.4.8/README.TESTING2
4561    /root/test/php-5.4.8/.gitignore

我已经设法执行find命令,但它不包括目录的总文件大小,这就是为什么我必须使用du命令

find /root/test/php-5.4.8/ \( -type d -printf "%s %p/\n" , -type f -printf "%s " -print \)

答案1

只需编写一些 bash 脚本即可使其工作。打印大小和文件名,如果是目录,请添加尾部斜杠。

du -ab | while IFS=$'\t' read -r size line; do printf "%s\t%s" $size "$line"; [[ -d $line ]] && printf "/"; echo; done

这适用于任何不包含换行符或以制表符结尾的文件名。

答案2

我最喜欢的 GNU 技巧du

du -chs -- */ *

由于 du 排除了命令行参数中的重复项,因此它可以工作,并且会自动打印斜杠,因为您为文件夹提供了斜杠。

相关内容