如何按指定.nc文件名规则复制并重命名/home/test/下的bash.sh?
轻松实现批量复制脚本的方案
嘿,这个需求用bash的基础语法就能快速搞定,给你几个实用的实现方式:
方法一:直观的多行循环(易读好理解)
直接在终端切换到目标目录,或者写个临时脚本执行下面的代码:
cd /home/test/ # 遍历当前目录下所有.nc文件 for nc_file in *.nc; do # 去掉文件名的.nc后缀,拿到基础名称 base_name="${nc_file%.nc}" # 执行复制操作,生成目标文件 cp bash.sh "${base_name}_bash.sh" done
关键细节解释:
*.nc:会自动匹配当前目录下所有后缀为.nc的文件,正好对应你提到的那5个文件${nc_file%.nc}:这是bash的参数扩展技巧,专门用来移除变量末尾指定的后缀,比如file_1a.nc经过处理后就变成了file_1a- 最后一行的
cp命令就是把原脚本bash.sh复制成拼接好的新文件名,完美符合你的要求
方法二:一行命令快速执行(适合终端直接敲)
如果不想写多行代码,把逻辑压缩成一行也能搞定:
cd /home/test/ && for f in *.nc; do cp bash.sh "${f%.nc}_bash.sh"; done
精准指定文件的版本(避免误处理其他.nc)
要是你的目录里以后可能会有其他.nc文件,不想一起处理,那可以直接列出要处理的5个文件:
cd /home/test/ target_files=(file_1a.nc file_1b.nc file_2a.nc file_6a.nc file_6b.nc) for nc_file in "${target_files[@]}"; do base_name="${nc_file%.nc}" cp bash.sh "${base_name}_bash.sh" done
验证结果
执行完之后,用ls *.sh命令就能看到生成的5个新脚本啦,完全符合你要的命名格式~
内容的提问来源于stack exchange,提问作者aaaaa
相关产品推荐
相关产品推荐

