所以我真的是bash的新手,并且正在计算某个目录中的文件数量,我已经知道该怎么做,
ls $1 | wc -l
但是,我想让shell在这样的文件数量后面打印出“文件”
3 files
我尝试了
ls $1 | wc -l
echo " files
但是输出是
3
files
如果我希望他们在一行中怎么办?
答案 0 :(得分:0)
尝试一下:
回显$(ls $ 1 | wc -l)文件
答案 1 :(得分:0)
您可以使用printf
来实现
printf '%s files' "$(ls "$1" | wc -l)"
,但是如果其中包含带换行符的文件名,则会出现(很少)问题(请参见https://mywiki.wooledge.org/ParsingLs)。一种更可靠的计数方法是使用file
,例如
printf '%s files' "$(find "$1" -maxdepth 1 -printf . | wc -c)"
,其中find
将打印一个“。”对于当前目录中的每个文件,我们都将其计算在内,因为文件名中的特殊字符将不再显示。尽管按照书面规定,find
还将计算“隐藏”文件,而ls
不会这样做。您可以根据需要消除类似的情况:
printf '%s files' "$(find "$1" -maxdepth 1 -not name '.*' -printf . | wc -c)"