Не удалось запустить сеанс bash после команды разделения окна экрана GNU

Использовать (perl )переименовать. Команда выглядит следующим образом:

rename 's/( [0-9]*).*\.ext/$1.ext/' *

Н.Б. есть два rename, которые обычно поставляются с дистрибутивами Linux.По умолчанию обычно используется более простая версия. Переименование на основе perl -намного мощнее, потому что оно дает вам доступ к регулярным выражениям. Убедитесь, что вы используете последний. (Вы не указали свой дистрибутив, но в Arch он предоставляется пакетом perl-rename.)

Сначала проверьте

Создайте файлы (Я добавил дополнительный файл в конце ).

$ touch 'filename1 1 extra1.ext' 'filename1 2.ext' 'filename1 3 extra2.ext' 'filename2 1.ext' 'filename2 100 extra3.ext' 'filename20 1.ext' 'filename20 15 extra100.ext' 'filename3 1 3 4.ext'

Проверка команды

$ rename 's/( [0-9]*).*\.ext/$1.ext/' * -n
filename1 1 extra1.ext -> filename1 1.ext
filename1 3 extra2.ext -> filename1 3.ext
filename20 15 extra100.ext -> filename20 15.ext
filename2 100 extra3.ext -> filename2 100.ext
filename3 1 3 4.ext -> filename3 1.ext

Если вы довольны результатами, снимите флаг «пробного -запуска»/теста -nи запустите его по-настоящему.

Пояснение

  • rename 's/foo/bar/' *:perl rename заменит вхождение регулярного выражения fooна bar. Это действует на все файлы *в текущем каталоге. Вы также можете явно заменить это на *.ext, чтобы ограничить файлы, с которыми он работает.
  • /( [0-9]*).*\.ext:Совпадение с пробелом, за которым следует ряд цифр [0-9]*, за которым следует еще один пробел. Включите первый пробел и цифры в группу захвата ( [0-9]*), чтобы использовать их позже. Затем сопоставьте все .*вплоть до расширения \.ext. Поскольку это регулярное выражение «жадное», оно попытается сопоставить как можно больше символов. т. е. если в части extraимени файла есть цифры, окруженные пробелами, оно будет им соответствовать.
  • /$1.extЗамените эту совпадающую часть группой захвата сверху $1, т. е. пробелом и цифрами, за которыми следует расширение .ext.
0
26.08.2020, 03:38
1 ответ

Мне удалось решить эту проблему с помощью метода @Fox.

0
18.03.2021, 23:09

Теги

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