重命名具有连续扩展号码的文件

时间:2017-10-26 01:24:10

标签: linux file rename bulk

我有一个包含以下格式的几百个文件的目录:

file.txt.1
file.txt.2
file.txt.3
file.txt.4
...

我需要将这些全部重命名为以下格式:

file1.txt
file2.txt
file3.txt
file4.txt
...

2 个答案:

答案 0 :(得分:0)

不确定这是否是您要求的最佳方式,但它会以您需要的方式重命名所有文件。只需将其保存到文件(例如rename.sh),然后为其授予执行权限(chmod +x rename.sh)并使用./rename.sh

运行
#!/bin/bash
for filename in file*; do 
    newFile=`echo $(basename $filename) | awk -F'.' '{print $1 $3 "." $2}'`
    echo mv \"$filename\" \"$(dirname $filename)/$newFile\";
done | /bin/bash

如果您想进行干跑,请将| /bin/bash替换为> renames.txt。这会将所有重命名的文件保存到文本文件中,您可以在其中查看更改。

答案 1 :(得分:0)

使用mmv,安装sudo apt-get install mmv

$ mmv -n '*.*.*' '#1.#3.#2'
file.txt.1 -> file.1.txt
file.txt.2 -> file.2.txt
file.txt.3 -> file.3.txt

或使用findshell (POSIX sh/bash/Korn/zsh) parameter substitution expansion

find . -type f -execdir sh -c 'num=${1##*.}; echo mv -v "$1" "file.${num}.txt" ' _ {} \;
  • 删除echo以对文件执行实际重命名。