![搜索子文件夹中的文件并将结果导出到文件](https://linux22.com/image/1113974/%E6%90%9C%E7%B4%A2%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%B9%B6%E5%B0%86%E7%BB%93%E6%9E%9C%E5%AF%BC%E5%87%BA%E5%88%B0%E6%96%87%E4%BB%B6.png)
我有一个包含数百个子文件夹的文件夹。我需要在子文件夹中递归查找那些不包含某些文件的文件夹(例如 *ch.pdf 或 *.jpg),并将结果导出到 txt 文件。提前谢谢
答案1
给你:
find <folder> -type d -exec bash -c "ls {} | grep -i \".*ch\.pdf$\|.*\.jpg$\" > /dev/null || echo {}" \; > <target file>
简要说明:
- 递归列出 <folder> 内的所有文件夹
- 对于找到的每个文件夹 - 列出所有文件并检查是否有以“ch.pdf”或“.jpg”结尾的文件。我们对这些文件不感兴趣,因此将输出重定向到 /dev/null。
- 如果没有找到这样的文件,则使用 打印相对文件夹路径
echo
。 - 将结果重定向
find
到 <目标文件>