如何使用BASH从文件名中删除特定字符

时间:2009-09-30 19:33:04

标签: bash

我有很多文件在名称中有共享模式,我想删除。例如,我有文件“a_file000.tga”和“another_file000.tga”。我想对那些会从名称中删除模式“000”的文件执行操作,从而产生新名称“a_file.tga”和“another_file.tga”。

5 个答案:

答案 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)

使用重命名,也许你需要在linux上安装它的python脚本

rename (option) 's/oldname/newname' ...

所以你可以像

一样使用它
rename -v 's/000//' *.tga

这意味着我们正在指示在该文件夹中替换所有带有.tga扩展名的文件,以用空格替换000。希望有效

您可以查看this链接以获取更多信息和here