我正在bash提示符PS1上工作,我想打印当前目录中的文件数。
我编写了一个有效的代码,但是,
有没有一种方法可以简化此(冗余)脚本?
$(ls -l | grep ^- | wc -l) $(if [ $(ls -l | grep ^- | wc -l) -eq 1 ]; then echo "file"; else echo "files"; fi)
我的目的是打印文件夹中文件的数量,并且需要IF语句来处理复数形式,以管理两种情况:
例如,我的〜文件夹包含三个文件,因此脚本应打印“ files”一词;我的〜/ Desktop只有一个文件,因此该脚本应打印“文件”
我在上面写下了代码行,这很容易完成工作,但是我认为,有一种简洁而又聪明的方式来实现它……
find . -maxdepth 1 -type f | awk 'END {printf("%d %s%s\n", NR, "file", (NR > 1) ? "s" : "")}'
解释:
find . -maxdepth 1 -type f
-搜索当前目录中的所有文件。awk 'END {printf("%d %s%s\n", NR, "file", (NR > 1) ? "s" : "")}'
NR
=从find
程序接收的行数,等于文件数。(NR > 1) ? "s" : "")
-如果行数(文件)多于1,则将s
结尾添加到file
单词中。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句