重命名文件夹中的所有文件

时间:2013-04-30 18:44:48

标签: linux bash file rename

我在linux上,下载了很多有趣的图片。不幸的是,我留下了许多重复的名称,如download (1)image.jpeg。我想把它们全部改成更有帮助的东西。

有没有办法(最好使用bash)将所有文件重命名为带有前导零的连续4位数字?

例如:

0001
0002
0003
0004
....

4 个答案:

答案 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