使用 loop 和 grep 处理子文件夹

Using loop and grep to deal with subfolders

在一堆子文件夹中,如何在遍历数组 {1h2s,1kqf,...} 时仅输入包含特定字符串(例如 1h2s)的子文件夹并执行 grep? 子文件夹全名由"oligomerAngle-1h2s" OR 1kqf等加上一串不规则数字组成

使用查找:
find . -type d -name \*1h2s\* -exec grep search {}/* \;

find .在当前目录向下搜索 -type d表示只查找目录 -name \*1h2s\* 仅匹配具有此名称的目录(您需要从 shell 中转义 *) -exec grep search {}/* \; 运行 对找到的目录中的每个文件进行 grep

注意:如果找到的目录中没有文件或有子目录,这将导致 grep 出现一些错误消息,如果您不想这样做,可以在命令中添加 2>/dev/null看到他们

终于让这个工作了,也可以使用多个字符串:

find ~/aaPROJECT/helicalPair_ax/selectedPairs/renumberedPdb/clusterPairs-1.25-12-05_windows.12.resle3.2A.RMSD1.3/oligomerAngle/ -type d -name \*1h2s\* -exec grep -E "Distance|Local angle|Average angle" {}/pairsAngles.txt \;

但是尝试了所有现有的在线解决方案后仍无法将结果输出到 txt 文件中...嗯,那是另一个话题了。