命令行 bash 用于进入多个目录并执行命令
Command line bash for entering multiple directories and executing a command
我是这个站点的新手(或多或少是编程方面的新手),但希望您能提供帮助。
我有许多名为 3K、4K、5K 等的目录。在每个目录中,我有 12 个名为 v1 到 v12 的子目录,每个子目录包含一个名为 OUTCAR 的文件。我正在尝试编写一个 bash 命令,允许我进入每个子目录并从 OUTCAR 收集数据。
当我分别进入每个子目录时,该功能没有任何问题。
我正在使用
for file in v{1..12} ; do grep "key_string" OUTCAR | awk '{print(relevant_stuff)}' > output.dat ; done
来自包含 v{1..12} 子目录的 *K fine。
但是,我收到一条错误消息,告诉我每个 v{1..12} 的 OUTCAR 都不存在。我知道它确实如此,所以我猜我没有正确地将 cd 命令首先定向到每个子目录中。有什么建议吗?
谢谢!
您最好从存在这些子目录的顶级目录使用此 find
命令:
find . -type d -name 'v[1-9][[1-9]' \
-exec awk '/key_string/ {print FILENAME ":" [=10=]}' {}/* >> output.dat \;
我是这个站点的新手(或多或少是编程方面的新手),但希望您能提供帮助。
我有许多名为 3K、4K、5K 等的目录。在每个目录中,我有 12 个名为 v1 到 v12 的子目录,每个子目录包含一个名为 OUTCAR 的文件。我正在尝试编写一个 bash 命令,允许我进入每个子目录并从 OUTCAR 收集数据。
当我分别进入每个子目录时,该功能没有任何问题。
我正在使用
for file in v{1..12} ; do grep "key_string" OUTCAR | awk '{print(relevant_stuff)}' > output.dat ; done
来自包含 v{1..12} 子目录的 *K fine。
但是,我收到一条错误消息,告诉我每个 v{1..12} 的 OUTCAR 都不存在。我知道它确实如此,所以我猜我没有正确地将 cd 命令首先定向到每个子目录中。有什么建议吗?
谢谢!
您最好从存在这些子目录的顶级目录使用此 find
命令:
find . -type d -name 'v[1-9][[1-9]' \
-exec awk '/key_string/ {print FILENAME ":" [=10=]}' {}/* >> output.dat \;