更改目录中的文件名

时间:2015-03-18 07:11:03

标签: linux bash shell

我需要将目录中的所有文件名从name.sql更改为tbl_name.sql,例如:

  

city.sql - > tbl_city.sql或usr_station.sql - > tbl_usr_staion.sql

你能告诉我为什么下面的代码片段不对。

for file in *.sql
do
  echo $file
  fnew = 'tbl_${file}.sql'
  eval mv ${file} ${fnew}
done

2 个答案:

答案 0 :(得分:2)

遵循这些步骤应该使脚本有效:

  1. 删除eval并仅使用普通mv命令(尽可能避免使用eval,因为它被视为不良做法,可能会导致严重的安全问题) 。
  2. 删除fnew=和字符串值之间的尾随空格。
  3. 将引号'替换为双引号",以便在$file赋值表达式中评估fnew
  4. for file in *.sql
    do
       echo $file
       fnew="tbl_${file}"
       mv "$file" "$fnew"
    done
    

答案 1 :(得分:0)

您可以尝试

for file in *.sql; do mv "$file" tbl_"$file"; done

请注意,在mv目标中没有额外的.sql后缀。它已包含在$ file变量中。