Linux 更改目录中的文件名
我需要将目录中的所有文件名从name.sql更改为tbl_name.sql,例如: city.sql->tbl_city.sql或usr_station.sql->tbl_usr_station.sql 请告诉我为什么下面的代码段不正确Linux 更改目录中的文件名,linux,bash,shell,Linux,Bash,Shell,我需要将目录中的所有文件名从name.sql更改为tbl_name.sql,例如: city.sql->tbl_city.sql或usr_station.sql->tbl_usr_station.sql 请告诉我为什么下面的代码段不正确 for file in *.sql do echo $file fnew = 'tbl_${file}.sql' eval mv ${file} ${fnew} done 以下步骤应使脚本正常工作: 删除eval并仅使用普通的mv命令(尽可能避免e
for file in *.sql
do
echo $file
fnew = 'tbl_${file}.sql'
eval mv ${file} ${fnew}
done
以下步骤应使脚本正常工作:
eval
并仅使用普通的mv
命令(尽可能避免eval
,因为这被认为是一种不好的做法,可能会导致一些严重的安全问题)李>
fnew
、=
和字符串值之间的尾随空格李>
“
替换为双引号”
,以便在fnew
赋值表达式中计算$file
用于*.sql中的文件
做
echo$文件
fnew=“tbl_${file}”
mv“$file”“$fnew”
完成
您可以试试
for file in *.sql; do mv "$file" tbl_"$file"; done
请注意,在mv目标中没有额外的.sql后缀。它已经包含在$file变量中。您不需要
eval
命令,只需使用mv“$file”$fnew”