如果文件数超过 X 则查找目录

如果文件数超过 X 则查找目录

我想知道是否有人可以建议最好的方法来做到这一点。在我的 Web Dir 中有大约 100 个文件夹;每个文件夹都是一个 clientID。

每个 ClientID 文件夹内都有一个文件夹子集。每个文件夹子集中都有一组相同的结构化文件夹。

例子:

httpdocs/client1234/amazon/
httpdocs/client1234/ebay/

在 Amazon 和 Ebay 的文件夹中,我们的目录结构如下:

In/
Out/
Backup/

我想做的是扫描整个 Web 目录并找到 IN 目录中包含超过 50 个文件的文件夹。

**编辑包含在 IN 目录中。只对 IN 目录上的文件计数感兴趣。

答案1

这一行应该有效:

find httpdocs -mindepth 2 -name In | xargs ls -1 | awk '$0 ~ /httpdocs.*In/{name=$0; start=NR} (NR-start)==50{print name;}'

它将首先查找所有In目录,然后列出其所有文件,最后过滤那些文件数超过 50 个的目录。

-mindepth根据您的开始文件夹进行调整。

答案2

这将循环遍历所请求的目录,计算文件(以及子目录的文件)以查看是否有超过 50 个文件;如果是这样,它会回显匹配的目录:

for dir in httpdocs/*/*/In
do
  count=$(find $dir | wc -l)
  if [ $count -gt 50 ]
  then
    echo $dir has more than 50 files
  fi
done

注意我严格使用“大于”50,因为find的输出在其输出到wc -l.

答案3

#!/bin/bash
 for dir in `find ./httpdocs/*/*/ -name In -type d` ; do
  count=`find $dir -type f | wc -l`
  if [[ $count -gt 50 ]]
     echo $dir
  fi
done

相关内容