У меня есть папка, содержащая большое количество (более 1500) файлов ttf, многие, но не все, как-то неправильно названы. например, arialttf вместо arial.ttf . Есть ли команда оболочки, которую я мог бы использовать, чтобы изменить дефектные имена файлов, чтобы хвостовая часть ttf была преобразована в .ttf?

Я достаточно компетентен в командах bash, но, боюсь, это за пределами моих возможностей. Я очень признателен за любую помощь.

3 ответа3

1

Я завершил это небольшим скриптом bash. Сохраните это в каталоге со всеми вашими файлами ttf и выполните его. Он находит все файлы, которые не содержат «.ttf», и переименовывает их, чтобы включить расширение.

#!/bin/bash

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

Вы можете ввести следующую команду в каталоге с ошибочно названными файлами:

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

Вы можете сначала поставить echo перед mv чтобы убедиться, что команда делает то, что вы ожидаете.

Команда работает путем установки каждого f на каждое имя файла, заканчивающееся на ttf которому не предшествует . затем переименуйте файл в имя с последними удаленными тремя символами (т. е. ttf) с добавлением .ttf затем добавьте.

0

При условии, что вы 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .