我需要重命名一批pngs,并且我当前有这个.sh文件
echo Renaming all files.
echo Please enter a prefix
read prefix
echo Please enter a filetype
read filetype
j=1;
for i in *.{jpg,jpeg,png};
do mv "$i" "$prefix"-"$j"."$filetype";
echo Renaming "$i" to "$prefix"-"$j"."$filetype";
let j++;
done
echo Renaming Complete当我运行它时,它丢失了前两个文件,并返回以下内容
mv: rename *.jpg to on-1.jpg: No such file or directory
Renaming *.jpg to on-1.png
mv: rename *.jpeg to on-2.jpg: No such file or directory
Renaming *.jpeg to on-2.png然后我剩下的是on-3.png -更高版本的文件。是什么导致了之前的错误?
发布于 2016-03-04 23:15:01
*.jpg *.jpeg *.png扩展首先在*.{jpg,jpeg,png}中发生,也就是说,它创建了三个单词:*.jpg *.jpeg *.png。在给定的目录中既没有jpg也没有jpeg文件,因此*没有什么可以展开的,因此它仍然是一个文字星号。要更改行为,可以设置nullglob选项:
shopt -s nullglob*.jpg将扩展为空字符串,并且不会在循环中迭代。
https://stackoverflow.com/questions/35799351
复制相似问题