选择性修改文件名

选择性修改文件名

我有一个文件夹,里面有大量(超过 1500 个) ttf 文件,其中很多(不是全部)文件不知为何被错误命名。例如,arialttf而不是arial.ttf。是否有一个 shell 命令可以用来更改有缺陷的文件名,以便将尾随的 ttf 部分转换为 .ttf?

我对 bash 命令相当熟练,但恐怕这超出了我的能力范围。如果能得到任何帮助,我将不胜感激。

答案1

您可以在包含错误命名文件的目录中输入以下命令:

for f in *[^.]ttf; do mv "$f" "${f%???}.ttf"; done

echo您可能希望首先在前面放置一个,mv以确保该命令按照您的预期执行。

该命令通过将每个文件名设置f为以以下结尾的文件名来工作ttf 不是前面加上.,然后将文件重命名为删除最后三个字符的名称(即ttf),.ttf然后附加 。

答案2

我用一个小的 bash 脚本完成了这个。将其保存在包含所有 ttf 文件的目录中并执行它。它会找到所有不包含“.tt​​f”的文件并重命名它们以包含扩展名。

#!/bin/bash

for f in *ttf ;
do
  if [[ $f != *'.ttf' ]]
  then
        mv $f ${f::-3}.ttf
  fi
done

答案3

如果你有rename Perl脚本的话这很简单:

$ touch arialttf
$ touch somethingttf
$ touch thirdttf
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Oct 27 18:30 arialttf
-rw-r--r-- 1 ja ja 0 Oct 27 18:31 somethingttf
-rw-r--r-- 1 ja ja 0 Oct 27 18:31 thirdttf
$ rename 's,ttf$,.ttf,' *
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Oct 27 18:30 arial.ttf
-rw-r--r-- 1 ja ja 0 Oct 27 18:31 something.ttf
-rw-r--r-- 1 ja ja 0 Oct 27 18:31 third.ttf

相关内容