如何编写脚本来执行多个目录中的文件?
问题是这样的:我有很多目录,每个目录都有一个要由 python 脚本读取和分析的数据文件(比如,a.py)。我不想“cd”到每个目录并键入“a.py”。输出保存在每个目录中。
find 会为你工作的魔法。
find -name datafile.dat -execdir ~/a.py '{}' \;
Run Code Online (Sandbox Code Playgroud)
find 在所有子目录中递归搜索匹配一组规则的文件并对它们执行操作。
-name 规则将让您找到名称与您提供的名称相匹配的文件。您可以使用通配符,例如,“*.dat”会找到所有 .dat 文件。
如有必要,您可以使用 -regex 而不是 -name 来匹配正则表达式模式而不是 glob 模式,因此您可以执行 ".*\.dat$" 来匹配所有 .dat 文件。
-execdir 将从找到的文件的目录中执行您给它的任何命令,用找到的文件替换“{}”。
你可能只使用一个for循环:
for i in first_dir second_dir third_dir; do
pushd $i
a.py
popd
done
Run Code Online (Sandbox Code Playgroud)
它将pushd $i; a.py; popd以$iset to运行first_dir,然后以$ias 运行second_dir,最后$i以 as 运行third_dir。pushd切换到给定目录,然后popd切换回您所在的位置