我有很多文件在名称中有共享模式,我想删除。例如,我有文件“a_file000.tga”和“another_file000.tga”。我想对那些会从名称中删除模式“000”的文件执行操作,从而产生新名称“a_file.tga”和“another_file.tga”。
答案 0 :(得分:54)
Bash可以做sed
- 像替换:
for file in *; do mv "${file}" "${file/000/}"; done
答案 1 :(得分:44)
试试这个(这适用于普通的旧Bourne sh
):
for i in *000.tga
do
mv "$i" "`echo $i | sed 's/000//'`"
done
两个参数都用引号括起来,以支持文件名中的空格。
答案 2 :(得分:9)
非bash解决方案,因为我知道两张快速海报已经涵盖了:
有一个名为rename
的优秀短perl程序,默认安装在某些系统上(其他系统的重命名程序不太有用)。它允许您使用perl正则表达式进行重命名,例如:
rename 's/000//' *000*.tga
答案 3 :(得分:3)
#!/bin/bash
ls | while read name; do
echo mv $name ${name/$1//}
done
答案 4 :(得分:2)