如何使用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 排除了命令行参数中的重复项,因此它可以工作,并且会自动打印斜杠,因为您为文件夹提供了斜杠。