如何通过Linux Bash脚本循环运行各子目录中的ak33.R文件?
用Bash循环运行指定子目录中的R脚本
以下是几种实现方式,按需选择:
1. 直接遍历已知的子目录(sub_folder1到sub_folder5)
如果明确知道子目录名称范围,可以用Bash的大括号扩展快速生成目录列表:
#!/bin/bash # 遍历sub_folder1至sub_folder5 for dir in /mnt/d/main_folder/sub_folder{1..5}; do # 先检查目标R文件是否存在 if [ -f "$dir/ak33.R" ]; then echo "执行脚本:$dir/ak33.R" Rscript "$dir/ak33.R" else echo "跳过:$dir/ak33.R 不存在" fi done
2. 自动匹配符合命名规则的子目录
如果子目录都是以sub_folder开头(比如还有sub_folder6等),可以用通配符自动匹配:
#!/bin/bash # 匹配所有以sub_folder开头的子目录 for dir in /mnt/d/main_folder/sub_folder*; do # 先确认是目录,再检查R文件 if [ -d "$dir" ] && [ -f "$dir/ak33.R" ]; then echo "执行脚本:$dir/ak33.R" Rscript "$dir/ak33.R" fi done
3. 遍历主目录下所有子目录
如果需要遍历/mnt/d/main_folder下的所有子目录,不管名称,只要里面有ak33.R就运行:
#!/bin/bash # 遍历主目录下所有子目录(*/ 匹配子目录) for dir in /mnt/d/main_folder/*/; do if [ -f "$dir/ak33.R" ]; then echo "执行脚本:$dir/ak33.R" Rscript "$dir/ak33.R" fi done
使用说明
- 将上述任意一段代码保存为脚本文件,比如
run_ak33.sh - 赋予脚本执行权限:
chmod +x run_ak33.sh - 运行脚本:
./run_ak33.sh
内容的提问来源于stack exchange,提问作者Thaatha_Paati
相关产品推荐
相关产品推荐

