我有一个文件夹,里面有大量(超过 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 文件的目录中并执行它。它会找到所有不包含“.ttf”的文件并重命名它们以包含扩展名。
#!/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