我在linux上,下载了很多有趣的图片。不幸的是,我留下了许多重复的名称,如download (1)
和image.jpeg
。我想把它们全部改成更有帮助的东西。
有没有办法(最好使用bash)将所有文件重命名为带有前导零的连续4位数字?
例如:
0001
0002
0003
0004
....
答案 0 :(得分:3)
上一个答案中提供的代码片段是一种优雅的方式,但是拼写错误或shell不兼容可能会导致它无法正常运行。
请尝试下面的代码。它做了同样的事情,但每个快捷方式都已在循环中用调试echo
命令显式编写。
counter=1
cd /my/image/directory
for f in $(ls -1)
do
new_filename=$(printf "%04d" ${counter})
echo "renaming ${f} ..to.. ${new_filename}"
mv ${f} ${new_filename}
(( counter=${counter}+1 ))
done
屏幕输出会有点健谈。如果文件太多,可能需要使用| tee screen.out
命令将done
添加到行尾。这样你就可以回去查看screen.out中记录的文件发生了什么。
答案 1 :(得分:1)
我创建了my own tool to do this。它还维护文件扩展名,我没有提及,但应该包括在内。这是代码:
#!/bin/sh
dir=$1
cd $dir
echo "Renaming all files in $dir."
COUNTER=1
for i in `ls -1`
do
extension=${i##*.}
mv "$i" "$COUNTER.$extension"
echo "$i ==> $COUNTER.$extension"
COUNTER=$(expr $COUNTER + 1 )
done
它没有(在撰写本文时)包含前导零,但它完成了工作。
答案 2 :(得分:-1)
只要您不关心将哪个文件重命名为什么,就很容易:)
counter=1
for f in *; do
mv "$f" "$( printf "%04d" $((counter++)) )"
done
答案 3 :(得分:-1)
尝试使用后缀.bash将所有文件重命名为文件夹中的后缀.sh可以轻松完成
rename .bash .sh *.bash