Как удалить все символы перед первой точкой в ​​имени файла?

Одна из возможных причин заключается в том, что файл, который необходимо изменить, еще не существует.

Запустите сценарий вместо chown и chmod, который может проверять, существует ли цель, и может записывать информацию в файл журнала.

0
25.07.2020, 07:40
1 ответ

Использование оболочки

Начнем с этих файлов:

$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 

Запустим эту команду:

$ for f in [0-9]*flac; do mv "$f" "${f#*.}"; done

После выполнения вышеуказанного файлы будут:

$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 3.flac'

for f in [0-9]*flac; doзапускает цикл forдля каждого имени файла, которое начинается с числа и заканчивается на flac. mv "$f" "${f#*.}"удаляет начало имени файла до первой точки включительно. doneсигнализирует об окончании цикла for.

Команда Perl rename

Существуют две несовместимые утилиты с именами rename. Этот метод применим к команде rename(, иногда называемой prename), которая поставляется с Perl.

Если у вас установлен другой rename, этот метод не будет работать.

Давайте снова начнем с этих файлов, а затем запустим команду prename:

$ ls
'1288.unique filename 3.flac'  '128.unique filename 1.flac'  '6.unique filename 2.flac'
$ prename 's/^\d+\.//' [0-9]*flac
$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 3.flac'

Переименование в Perl использует регулярные выражения. \d+\.соответствует одной или нескольким цифрам, за которыми следует точка. ^требует, чтобы эти цифры стояли в начале имени файла. s/^\d+\.//заменяет эти цифры и точку ничем.

1
18.03.2021, 23:17

Теги

Похожие вопросы