如何在bash脚本中使用for循环复制和重命名文件?

时间:2013-12-09 23:54:25

标签: linux bash shell loops

如何使用For循环将所有文件* .html复制到* .php?

帮帮我......

这是我的剧本:

#!/bin/bash
list="$(ls *.html)"
for i in "$list"
do
  newname=$(ls "$i" | sed -e 's/html/php/')
  cat beginfile > "$newname"
  cat "$i" | sed -e '1,26d' | tac | sed -e '1,21d' | tac >> "$newname"
  cat endfiel >> "$newname"
done

或者你有另一个想法?

3 个答案:

答案 0 :(得分:5)

for f in *.html; do cp $f ${f%.html}.php; done

答案 1 :(得分:3)

你走了:

for i in *.html; do mv "$i" "${i%.html}.php"; done

在RedHat Linux和衍生产品中,有一个rename实用程序可将其简化为:

rename .html .php *.html

在Debian Linux和衍生产品中,有一个rename实用程序可以将其简化为:

rename 's/.html$/.php/' *.html

检查man renamerename --help,了解如何使用您拥有的实施方案。有时,该实用程序称为rename.pl,而不仅仅是rename

答案 2 :(得分:1)

如果安装了perl软件包,可以省略for循环altogeather。

#!/bin/bash
rename 's/html/php/' *.html