每个子目录中的文件数量

每个子目录中的文件数量

我想要一个 BASH 命令来列出目录的每个子目录中的文件数量。

例如在目录中/tmpdir1,,dir2......我想看看:

`dir1` : x files 
`dir2` : x files ...

答案1

假设您只想要文件的递归计数,而不是目录和其他类型,那么类似这样的操作应该有效:

find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
  printf "%-25.25s : " "$dir"
  find "$dir" -type f | wc -l
done

答案2

这个任务让我非常着迷,所以我想自己想出一个解决方案。它甚至不需要一个while循环,可能执行速度更快。毋庸置疑,Thor 的努力对我理解细节有很大帮助。

以下是我的:

find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "{} : $(find "{}" -type f | wc -l)" file\(s\)' \;

它看起来很朴素是有原因的,因为它的功能比看上去要强大得多。:-)

但是,如果您打算将其包含到您的.bash_aliases文件中,它必须看起来像这样:

alias somealias='find . -maxdepth 1 -mindepth 1 -type d -exec sh -c '\''echo "{} : $(find "{}" -type f | wc -l)" file\(s\)'\'' \;'

注意嵌套的处理非常棘手单身的引文。不,这是不是可以使用双引号来引用该sh -c参数。

答案3

find . -type f | cut -d"/" -f2 | uniq -c

列出当前文件夹中的文件夹和文件,并显示其下的文件数量。在我看来,它快捷又实用。(文件数量显示为 1)。

答案4

find . -mindepth 1 -type d -print0 | xargs -0 -I{} sh -c 'printf "%4d : %s\n" "$(find {} -type f | wc -l)" "{}"'

我经常需要计算子目录中的文件数量并使用此命令。我希望首先显示计数。

相关内容