使用循环重命名文件

rename file using a loop

我有很多具有相同格式 (???_ideal.sdf) 名称的文件,我需要重命名所有 (???.sdf) 从名称“理想”中删除。例如:

Files: 
002_ideal.sdf 
ERT_ideal.sdf 
234_ideal.sdf 
sCX_idel.sdf

New Files:
002.sdf 
ERT.sdf 
234.sdf 
SCX.sdf

我想用一个循环,但我不知道如何在新文件名中指出应该删除“individual”。

例如:

for file in ???_individual.sdf; mv $file什么?

根据您展示的示例,请您尝试以下操作。这只会在终端上打印重命名命令(为了安全起见,在实际重命名文件之前首先检查并确保命令是否正常并且看起来没问题),以执行实际的重命名从以下内容中删除echo

for file in *_ideal.sdf
do
   echo mv "$file" "${file/_ideal/}"
done 

基于this answer你也可以写成一行:

rename 's/^(.*)_ideal.png/.png/s' **/**

第一个参数替换_ideal.png,第二个参数表示所有文件。