Linux在单一数千个目录中查找命令

我必须search大约7,000个目录,并确定上个月修改的PDF数量,这些数据按照PDF数据库中的PDFtypes进行分组。 文件夹结构是…

/folder/to/FORMID/*.pdf /folder/to/FORMID/*.pdf /folder/to/FORMID/*.pdf /folder/to/FORMID/*.pdf 

目前我正在运行…

 find "/folder/to/FORMID/" "/folder/to/FORMID/" "/folder/to/FORMID/" -name '*.pdf' -mtime +31 -mtime -51 | wc -l 

除了最多4,000个目录作为参数。 这不是返回我所知道的是准确的结果。

这是做这个最有效的方法还是有另一个我可以使用的Linux命令?

如果你有一个文件包含要search的目录的名字,你可以做这个shell / find组合:

 for i in `cat LIST_OF_DIR_NAMES.TXT`; do find ${i} -mtime +31 -mtime -51 -name '*.pdf' ; done | wc -l 

这将在LIST_OF_DIR_NAMES.TXT中的每个目录上运行查找,并为您提供find的总文件。

查找应该适当地工作。 由于命令正在运行,我假设它不是太多/太长的参数错误。 给,这可能是一个find错误。 有很多select可以合理解决这个问题。 这里有两个:

  • 脚本代替直接使用查找
  • 使用args -n $NUM来检查$ NUM目录,每次运行find

    cat directory_list | xargs -n 30 -IXfindX -mtime +31 -mtime -51 -name'* .pdf'

我假设你有很多子目录你不打算读取,因此没有指定一个更高级别的目录。

如果你想在过去的30天内修改PDF文件,你会不会这样做:

  find dir1 dir2 ... dirn -name '*.pdf' -mtime -31 -print