shell脚本实现文件改名/重命名

本文介绍了一种使用Shell脚本来批量修改文件名的方法,特别适用于地震数据文件的标准化命名,通过awk命令进行字符串处理,实现了从复杂原始命名到规范化格式的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  shell脚本实现文件改名小操作, 在此做一记录.

#!/bin/bash
#将数据文件.SAC名改为'<sta>.[N/E/Z].SAC'
#例如2014.143.20.49.21.0000.YN.BAS.00.BHE.M.SAC改为BAS.E.SAC

cd ../Data
for FILE in ./*
	do
	cd ./$FILE
	ls
  #先ls,显示给文件下的所有文件名,对这些文件名使用awk命令,print出相应的mv *** *** 交由bash处理,给文件重命名.
        ls *.SAC | awk -F"." '{print "mv "$0" "$8"."$10"."$12}' | bash 

  	rename "s/BH//" *   #将BH替换为"",即删除BH
  #	rename 's/^/filt./' *.SAC  #增加前缀"filt."
  #	rename 's/filt.//' *      #删除前缀"filt."
 	cd ..
	done

 

### 使用Shell脚本批量重命名文件 #### 方法一:添加前缀 通过设置特定的目录路径和希望增加的前缀,可以遍历指定位置的所有文件,并逐一为这些文件名添加设定好的前缀。下面是一个简单的例子: ```bash #!/bin/bash # 设定要更改名称的文件所在的位置以及想要附加给每个文件的名字部分 directory="/path/to/directory" prefix="new_" # 对于该目录中的每一个项目... for file in "$directory"/*; do # 提取出不含路径的部分作为原始文件名 filename=$(basename "$file") # 将旧名字替换成新的——即加上了我们定义过的前缀之后的样子 mv "$file" "$directory/$prefix$filename" done echo "所有选定文件已被赋予新名称." ``` 这段代码展示了如何向一批文件添加统一前缀的过程[^1]。 #### 方法二:按顺序编号重命名PCD文件 对于有特殊格式需求的情况,比如按照一定规律重新排列文件序号,则可以通过如下方式实现: ```bash let i=1 cd /mnt/hgfs/H/20230227/ mkdir -p original/ for file in *.pcd; do cp "$file" original/ mv "$file" "${i}.pcd" echo "$file 已被命名为 ${i}.pcd" let i=i+1 done ``` 这里演示的是针对`.pcd`类型的点云数据文件执行连续整数形式的更名操作[^2]. #### 方法三:基于模式匹配替换字符串 当目标是从现有文件名中移除或者改变某些固定的字符片段时,可采用这种方法来完成任务: ```bash old_string='原字符串' new_string='新字符串' find . -type f -name "*${old_string}*" | while read fname ; do new_name=$(echo $fname | sed s/"${old_string}"/"${new_string}"/g) mv "$fname" "$new_name" done ``` 上述命令能够有效地将符合条件(含有`${old_string}`)的所有文件里的这部分内容更新成`${new_string}`,适用于更加灵活多变的实际应用场景[^3]. #### 方法四:处理含空格或其他复杂情况的文件名 考虑到实际环境中可能会遇到各种复杂的文件命名规则,在编写批处理程序之前应该充分考虑这些问题的可能性并采取相应措施加以解决,例如调整IFS环境变量以适应不同分隔符的要求. ```bash OLD_IFS=$IFS IFS=" " for subfile in `ls`; do ... done IFS=$OLD_IFS ``` 以上代码段说明了怎样临时变更内部字段分隔符(`IFS`)从而使得循环能正确解析那些包含空白在内的非标准文件名[^5].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值