【问题标题】:Filtering ls output to only display dirs/files less than certain size过滤 ls 输出以仅显示小于特定大小的目录/文件
【发布时间】:2020-09-15 23:01:16
【问题描述】:

我正在使用ls -lRa 递归地检查我的文件结构。

但是,当我访问大型目录时,需要很长时间才能浏览它们。

你如何过滤这个ls -lRa 命令,以便如果它所在的目录超过一定的大小,那么它将只使用ls -la 而不会浪费时间递归地通过目录。

我想保持ls -la 格式。

一些基本的伪代码可能是:

for each fileSize
do
if fileSize is greater than x
then ls -lRa on that directory 
else 
ls -la dir on that directory
fi
done

在这个例子中我将如何获得 fileSize 变量。

我知道我可以使用-ls -la | awk '{print $5}',但我如何执行检查以查看此数字是否小于/大于大小所属的目录?

【问题讨论】:

    标签: bash


    【解决方案1】:

    必填:Don't parse ls

    你可以use find to count the number of files in a directory,所以试试这样的:

    for dir in ./*/; do
        count="$(find "$dir" -printf '.' | wc -c)"
        if [[ $count -gt $x ]]; then
            ls -lRa "$dir"
        else
            ls -la "$dir"
        fi
    done
    

    【讨论】:

      猜你喜欢
      • 2022-11-30
      • 2015-06-26
      • 1970-01-01
      • 2021-03-30
      • 2017-09-30
      • 2010-11-04
      • 2023-03-31
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多