使用 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 文件中...嗯,那是另一个话题了。
在一堆子文件夹中,如何在遍历数组 {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 文件中...嗯,那是另一个话题了。