使用循环重命名文件
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,第二个参数表示所有文件。
我有很多具有相同格式 (???_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,第二个参数表示所有文件。