![如何编写脚本来执行多个目录中的文件](https://linux22.com/image/42048/%E5%A6%82%E4%BD%95%E7%BC%96%E5%86%99%E8%84%9A%E6%9C%AC%E6%9D%A5%E6%89%A7%E8%A1%8C%E5%A4%9A%E4%B8%AA%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6.png)
如何编写脚本来执行多个目录中的文件?
问题是这样的:我有很多目录,每个目录都有一个要由 python 脚本读取和分析的数据文件(例如,a.py
)。我不想“cd”到每个目录并输入“a.py”。输出保存在每个目录中。
答案1
find
将为你发挥魔法。
find -name datafile.dat -execdir ~/a.py '{}' \;
find 在所有子目录中递归搜索与一组规则匹配的文件并对它们执行操作。
-name 规则将让您查找名称与您指定的名称相匹配的文件。您可以使用通配符,例如,“*.dat”将查找所有 .dat 文件。
如有必要,您可以使用 -regex 而不是 -name 来匹配正则表达式模式而不是 glob 模式,因此您可以执行“.*\.dat$”来匹配所有 .dat 文件。
-execdir 将执行您从找到的文件的目录中给出的任何命令,并将“{}”替换为找到的文件。
答案2
您可能可以只使用for
循环:
for i in first_dir second_dir third_dir; do
pushd $i
a.py
popd
done
它将pushd $i; a.py; popd
使用$i
set to运行first_dir
,然后再次使用$i
as second_dir
,最后使用$i
as third_dir
。pushd
切换到给定目录,然后popd
切换回原来的位置