Bash 统计目录下文件夹文件数

编程
Article Directory

使用 Bash 统计一个文件夹下的文件数目

统计当前目录下的所有文件数目:

1
ls -l | grep "^-" | wc -l

统计当前目录下的目录的文件数:

1
2
3
4
ls -l | awk '{ if ( $1 ~ "^d" ) print $9 }' | while read $dir
do
echo "$dir: $(ls -l $dir | grep '^-' | wc -l )";
done

本来尝试使用 xargs ,但是,xargs 后面必须跟一个程序,无法使用函数,也不执行多条语句,调换变量时,对于括号内变量也不扩展 ,例如

1
ls -l | awk '{ if ( $1 ~ "^d" ) print $9 }' | xargs -n1 -I {} echo "{} : $(ls -l {} | grep | grep '^-' | wc -l )";

这个语句,最好会在 $(ls -l {} ....) 处报错,因为 {} 未被正确替换为变量,所以,实际执行就是 $(ls -l {} ....) 本身,所以会提示,找不到文件 {}

最后,想到用 read 从管道读出数据的方法。

Author: 哒琳

Permalink: http://blog.jieis.cn/2022/921e8ff7-98a4-4184-bad1-99d67f2e62e4.html

Comments