Shell脚本 - 运行正则表达式来修改文件,包括文件名

时间:2010-06-20 01:20:55

标签: bash sed awk

我有很多名为12345.html,12346.html等的html文件。我需要将“style.css”更改为“style-12345.css”或相应的文件名。我不确定使用什么工具,建议?

3 个答案:

答案 0 :(得分:3)

使用for循环和sed非常容易完成:

for i in *.html; do
    sed -i "s/style\\.css/style-`basename $i .html`.css/g" $i
done

循环运行内部命令,并将$i设置为每个.html文件名。 sed -i修改文件。 basename $i .html获取$i后没有.html后缀(即只是数字)

答案 1 :(得分:1)

查找名为rename的命令。它有两种,具体取决于实施情况。

perl包提供/usr/bin/prename,它使用perl样式的正则表达式来重命名文件。例如,这个命令

$ prename 's/foo/bar/ *foo* 

会在包含'foo'的每个文件名中将'foo'更改为'bar'。

util-linux包提供/usr/bin/rename,它使用简单的字符串替换来重命名文件。例如,这个命令

$ rename foo bar *foo*

与第一个效果相同。

prename比常规rename强大得多,但这种力量意味着使用起来比较棘手。

答案 2 :(得分:0)

perl -pi -e 's/style.css/style-12345.css/g' *.html