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



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

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

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

file1.txt
file2.txt
file3.txt
file4.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

或者使用 find 和 shell (POSIX sh/bash/Korn/zsh) 参数替换扩展。

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

不确定这是否是执行您要求的最佳方法,但它会按照您需要的方式重命名所有文件。只需将其保存到文件(例如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 。这会将所有重命名的文件保存到文本文件中,您可以在其中查看更改。

最新更新