让AI帮忙写了个脚本,供大家参考。原理是提前在当前的算例文件夹下创建好链接,链接到另一个硬盘已经创建好的时间文件夹。实测在/home/disk1/caseA目录下运行OpenFOAM求解器,可以将数据文件存到/home/disk2/caseB中。注意这个脚本得在/home/disk1/caseA目录下运行,不然ln命令总会有一些bug,有时候是没办法正确创建链接,有时候是会出现链接的嵌套。
#!/bin/bash
# 配置路径
src="/home/disk1/caseA"
dst="/home/disk2/caseB"
# 创建目标目录
mkdir -p "$dst"
# 处理单个 processor 的函数
process_proc() {
local proc="$1"
local dst="$2"
local procname=$(basename "$proc")
# 创建 processor 目录
mkdir -p "$dst/$procname"
# 生成时间序列并创建时间文件夹(自动剪除尾随零)
seq 8.0001 0.0001 8.5 | while read t; do
formatted_t=$(printf "%g" "$t")
mkdir -p "$dst/$procname/$formatted_t"
# 创建符号链接,指向目标目录中的时间文件夹
ln -sfn "$dst/$procname/$formatted_t" "$procname/$formatted_t"
done
}
# 导出函数以便并行使用
export -f process_proc
# 收集所有 processor 目录
proc_dirs=("$src"/processor*)
# 并行处理(使用所有CPU核心)
parallel --jobs 0 --progress --bar process_proc {} "$dst" ::: "${proc_dirs[@]}"
echo "processor 文件夹和时间文件夹创建完成。"