如何对 ls 返回的每个文件使用 wc

问题描述 投票:0回答:1

我正在尝试获取以下信息,给定一个包含很多文件夹的文件夹,获取每个文件夹的名称和子文件夹的总数,无需递归,以便快速完成。

为此我正在尝试:

ls -d */ | xargs ls | wc -l

这当然是sum all xargs ls,问题是我不知道怎么拆分

100000

第二次尝试是

for i in ls -d */; do echo $i; ls $i | wc -l; done

但返回

name folder
wc result
name folder
wc result
name folder
wc result

由该命令返回而不是

folder_a    1000
folder_b    10
folder_c    10
...

是否可以在一行中执行此操作,或者我是否需要创建一个 bash 脚本?

谢谢

bash xargs
1个回答
1
投票

像这样:

printf '%s\n' */ |
    while IFS= read -r dir; do
        res=$(printf '%s\n' "$dir"* | wc -l)
        echo "$res $dir"
    done
© www.soinside.com 2019 - 2024. All rights reserved.