我有一个目录,有多个子目录。在每个子目录中,都有一个我希望对其执行分析的文件(已经编写的代码)。
对于所有子目录来说,常见的是它们具有相同扩展名的文件,应该对其执行分析。
使用Unix,是否有一种方法可以编写命令:
重复它。
我将感谢所有的建议。
发布于 2020-10-27 19:59:54
使用find命令。find . -type f -name '*.txt' -exec prog \{} \;将使用当前目录.中的每个文件的名称和扩展名.txt (即与模式*.txt匹配)执行程序.txt。-type f排除目录(以及管道和设备)。-exec表示执行此命令;\{}将被文件名替换;\;表示命令结束。
如果您的文件名中没有空格、引号或反斜杠,这是绝对有效的。如果是这样的话,它会变得更加棘手:find . -type f -name '*.txt' -print0 | xargs -0 -n1 prog,假设文件名参数位于行尾。-print0意味着输出具有空终止(零字符)的文件,而-0表示输入为空终止。xargs接受它的输入,并对每个以空结尾的单词调用prog。-n1意味着每次调用只使用一个参数;如果程序接受多个文件名作为参数,则可以省略它。如果需要在参数之后插入文本,可以使用-i。
注意:我知道,对于安全的系统外壳脚本来说,出于各种原因使用-exec可能并不可取,但是对于这样的用例来说是可以的。
https://stackoverflow.com/questions/64561235
复制相似问题