Answers:
假设您只想递归计数文件,而不是目录和其他类型,则应如下所示:
find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
printf "%-25.25s : " "$dir"
find "$dir" -type f | wc -l
done
find
... -print0 | xargs -0
....
bash
alias
!!
sort -rn -k 2,2 -t$':'
得到管道的DESC列表
这项任务使我着迷,以至于我想自己想办法。它甚至不需要一段时间的循环,并且执行速度可能更快。不用说,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
。
strace -fc script
。您的版本发出了大约70%的系统调用。+1代表更短的代码:-)
find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f | wc -l)" {}' \; | sort -nr
find . -type f | cut -d"/" -f2 | uniq -c
列出当前文件夹中的文件夹和文件,并在下面找到文件数量。快速实用的IMO。(文件显示为1)。
| sort -rn
按文件数排序子目录。
如果要递归计数,则使用find绝对是一种方法,但是如果您只想直接在某个目录下计数文件:
ls dir1 | wc -l
ls -d */ | xargs -n1 ls | wc -l
(不过,使用您接受的答案,如果它已经有效的话!这只是现在就知道。)
find
如此重要的原因。(更不用说-print0
和xargs -0
,已经由Scott在对方的回答中指出)
我用的...这将在您作为参数给出的所有子目录中组成一个数组。打印子目录和相同子目录的计数,直到处理完所有子目录。
#!/bin/bash
directories=($(/bin/ls -l $1 | /bin/grep "^d" | /usr/bin/awk -F" " '{print $9}'))
for item in ${directories[*]}
do
if [ -d "$1$item" ]; then
echo "$1$item"
/bin/ls $1$item | /usr/bin/wc -l
fi
done
您可以使用此python代码。通过运行启动解释器python3
并粘贴以下内容:
folder_path = '.'
import os, glob
for folder in sorted(glob.glob('{}/*'.format(folder_path))):
print('{:}: {:>8,}'.format(os.path.split(folder)[-1], len(glob.glob('{}/*'.format(folder)))))
或嵌套计数的递归版本:
import os, glob
def nested_count(folder_path, level=0):
for folder in sorted(glob.glob('{}/'.format(os.path.join(folder_path, '*')))):
print('{:}{:}: {:,}'.format(' '*level, os.path.split(os.path.split(folder)[-2])[-1], len(glob.glob(os.path.join(folder, '*')))))
nested_count(folder, level+1)
nested_count('.')
输出示例:
>>> figures: 5
>>> misc: 1
>>> notebooks: 5
>>> archive: 65
>>> html: 12
>>> py: 12
>>> src: 14
>>> reports: 1
>>> content: 6
>>> src: 1
>>> html_download: 1