质量重命名带来错误



我在当前目录中有以下文件:

file_73tyd7d.jpg
file_e8djuh.jpeg
file_eidie8d.jpg
file_iadiijj.jpg

我想:

0.jpg
1.jpeg
2.jpg
3.jpg

我首先做:

NB=0;for FILE in `ls`;do echo mv "${FILE}" "${NB}.${FILE#*.*}";((NB=NB+1));done

NB=0;for FILE in `ls`;do echo mv "${FILE}" "${NB}"."${FILE#*.*}";((NB=NB+1));done

输出:

file_73tyd7d.jpg 0.jpg  -> why is that? 
mv file_e8djuh.jpeg 1.jpeg
mv file_eidie8d.jpg 2.jpg
mv file_iadiijj.jpg 3.jpg

除了第一个文件,它看起来很好。

NB=0;for FILE in `ls`;do mv "${FILE}" "${NB}.${FILE#*.*}";((NB=NB+1));done

和我有以下错误:

mv: cannot stat ''$'33''[H'$'33''[2J'$'33''[3J'$'33''[0m'$'33''[01;35mfile_73tyd7d.jpg'$'33''[0m': No such file or directory
mv: cannot stat ''$'33''[01;35mfile_e8djuh.jpeg'$'33''[0m': No such file or directory
mv: cannot stat ''$'33''[01;35mfile_eidie8d.jpg'$'33''[0m': No such file or directory
mv: cannot stat ''$'33''[01;35mfile_iadiijj.jpg'$'33''[0m': No such file or directory

本任务不使用lsls应该以交互方式使用(参见为什么不应该解析ls的输出)。此外,不要为自己的变量名使用全大写名称(请参阅正确的Bash和shell脚本变量大写)。你的脚本应该是这样写的:

#!/bin/bash
nb=0
for file in *; do
echo mv -i -- "$file" "$((nb++)).${file##*.}"
done

相关内容

  • 没有找到相关文章

最新更新