如何使用命令行从文件名中删除字符?

a.v*_*a.v 6 command-line rename batch-rename

我有一堆需要重命名的文件,但我不想为其创建脚本,只是一个命令行。

我需要删除.和之间的最后一位数字.gif

22771786_01.204.gif  
22771786_02.203.gif  
22771786_03.10.gif  
22771786_04.56.gif
Run Code Online (Sandbox Code Playgroud)

要像这样:

22771786_01.gif  
22771786_02.gif  
22771786_03.gif  
22771786_04.gif
Run Code Online (Sandbox Code Playgroud)

Arr*_*cal 14

您可以使用 for 循环和一些 bash 扩展来实现这一点。如果您已经在包含文件的目录中:

for f in ./*; do mv "$f" "${f%.*.gif}.gif" ; done
Run Code Online (Sandbox Code Playgroud)

如果包含文件的目录名为 /home/gifstore/ :

for f in /home/gifstore/*; do mv "$f" "${f%.*.gif}.gif" ; done
Run Code Online (Sandbox Code Playgroud)

${f...}我们保存到名为 的变量中的每个文件名进行扩展f。在%从可变的端部中的文件名装置的膨胀删除以下图案的最短匹配。模式是.*.gif,表示.和之间的任意数量的字符.gif。最后,我们.gif在扩展之外附加文字字符串来创建我们的新文件名,并依赖于mv命令来移动文件。

这不适用于隐藏文件,以..