我有一个包含以下格式的几百个文件的目录:
file.txt.1
file.txt.2
file.txt.3
file.txt.4
...
我需要将这些全部重命名为以下格式:
file1.txt
file2.txt
file3.txt
file4.txt
...
答案 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
或使用find
和shell (POSIX sh/bash/Korn/zsh) parameter substitution expansion。
find . -type f -execdir sh -c 'num=${1##*.}; echo mv -v "$1" "file.${num}.txt" ' _ {} \;
echo
以对文件执行实际重命名。