Bash 筛选ls输出以仅显示小于特定大小的目录/文件
我正在使用Bash 筛选ls输出以仅显示小于特定大小的目录/文件,bash,Bash,我正在使用ls-lRa递归地遍历我的文件结构 然而,当我访问大目录时,需要花费很长时间来浏览它们 如何过滤此ls-lRa命令,以便如果ls所在的目录超过某个大小,那么它将只使用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
ls-lRa
递归地遍历我的文件结构
然而,当我访问大目录时,需要花费很长时间来浏览它们
如何过滤此ls-lRa
命令,以便如果ls所在的目录超过某个大小,那么它将只使用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}'
,但我如何执行检查,以查看此数字是否小于/大于大小所属的目录?
你可以,所以试试这样:
for dir in ./*/; do
count="$(find "$dir" -printf '.' | wc -c)"
if [[ $count -gt $x ]]; then
ls -lRa "$dir"
else
ls -la "$dir"
fi
done