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

Rename files that have consecutive numbers for extensions

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

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

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

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

不确定这是否是完成您所要求的最佳方式,但它会按照您需要的方式重命名所有文件。只需将它保存到一个文件(例如rename.sh)然后给它执行权限(chmod +x rename.sh)和运行和./rename.sh

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

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

使用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 "" "file.${num}.txt" ' _ {} \;
  • 删除 echo 以对文件执行实际重命名。