仅计算目录中的可见文件

时间:2014-04-27 15:36:37

标签: linux bash

我的目录中隐藏文件有问题。如果我使用$(find . -type f | wc -l)它显示8个文件,它们也计算隐藏文件,那么应该只有7个文件。

有什么东西可以只计算可见文件吗?

3 个答案:

答案 0 :(得分:2)

忽略以.开头的名称:

find . ! -name '.*' -type f | wc -l

来自man页面:

  

!表达

 -not expression
         This is the unary NOT operator.  It evaluates to true if the
         expression is false.

如果您有包含换行符的文件名,则可以使用gnu find(在评论中gniourf gniourf建议):

find . ! -name '.*' -type f -maxdepth 1 -printf 'x' | wc -c

答案 1 :(得分:0)

find . -type f -not -path '*/\.*' | wc -l

-not -path允许您忽略名称以.开头的文件(隐藏文件)

答案 2 :(得分:0)

排除以(。)

开头的所有文件
find ./  ! -name '\.*' -type f | wc -l

! simply negates the search

如果这不起作用,那么试试这个看起来很脏的解决方案:

ls -lR | egrep '^(-|l|c|b|p|P|D|C|M|n|s)'  | wc -l

列出了除目录之外的所有类型的文件。 您可以在linux here

中找到文件类型

没有-R你只想看同一个目录。