问题描述
简单的问题我确定。我已经看到 an answer 展示了如何做到这一点,包括子目录,但我想知道只有当前目录中有多少文件(不是文件夹)。谢谢。
最佳办法
ls -F |grep -v / | wc -l
-
ls -F
列出所有文件并将指示符(*/=>@| 之一)附加到条目 -
grep -v /
保留所有不包含斜杠的字符串 -
wc -l
计数行
次佳办法
试试这个oneliner:
find -maxdepth 1 -type f | wc -l
第三种办法
尝试这个
ls -al | grep ^[-] | wc -l
-
ls -al
— 以长列表格式列出所有文件 -
grep ^[-]
— 搜索以 “-” 开头的字符串,当用 ls -al 列出文件时,该字符串是表示常规文件的符号 -
wc -l
— 计算行数
第四种办法
我只想添加 thom’s answer 因为我喜欢玩 Bash 。它是这样的:
echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"
Bellow 是我的 /data
目录的示例结果:
Directory /data has 580569 file(s).
下面是我的解释:
-
echo double-quoted-message
将打印一条理想的消息。 -
echo
的双引号消息中的$(any-desirable-valid-command)
将打印相关命令执行的结果。 -
pwd
将打印当前目录。 -
ls -F
用于列出所有文件并将指示符(*/=>@| 之一)附加到条目。我从 thom’s answer 复制了这个。 -
grep -v /
是搜索 plain-text 的命令,-v /
参数将保留所有不包含斜杠的字符串。 -
wc -l
将打印行计数。
我知道这个问题已经有 3 年历史了,我实在忍不住想添加另一个答案。
第五种办法
如果您的系统上安装了 tree
,您可以使用以下命令:
tree -L 1 /path/to/your/directory | tail -n 1
它向您显示该目录中的文件和目录数。
-L n
显示搜索深度。
您可以使用 sudo apt-get install tree
安装 tree
。