我们如何计算在大型机环境中使用 unix 的服务器目录中存在的文件数。我已经尝试了以下命令,但它弯曲并显示底部提到的错误:
cd "/Deepak/dir"
ls -1 | wc -l
ls -l . | egrep -c '^-'
ls -cf
尝试第一个命令后,我收到的错误消息是:无法 ls:"/Deepak/dir/|" 找不到。
我不知道为什么在这里显示管道。我认为这就是原因,错误是找不到目录,因为"/Deepak/dir/|"和"/Deepak/dir/"不一样。
怎么样:
ls -1 | wc -l
这似乎对我有用。
| wc -l 也可以正常工作
如果您只想在要检查的目录中计算文件而不计算(子)目录,请使用以下内容而不是 ls -1
find yourdirname -maxdepth 1 -type f | wc -l
-maxdepth
仅将find
限制为您的姓名,-type f
仅在搜索时考虑文件。
如果您只想要文件,并且只想计算名称中带有换行符的文件一次,那么这应该是一种相当安全的方法:
i=0
while read -d ''; do
((i++))
done < <( find /Deepak/dir -maxdepth 1 -type f -print0 )
echo $i
警告:在大多数Linux发行版中发现的GNU版本的find
与bsd find
略有不同,后者可能更有可能在"Unix"中找到。 以上适用于两个版本(例如在 Linux 和 OSX 上)。 但是您的大型机可能还有另一个不同版本的find
。