for file in * ; do
echo mv -v "$file" "${file#*_}"
done
выполните это для удовлетворения этого, все в порядке.
если это, удалить echo
от команды и это переименует файлы, как Вы хотите.
"${file#*_}"
обычная функция замены в оболочке. Это удаляет все символы перед первым _
символ (включая сам символ). Для получения дополнительной информации посмотрите здесь.
Можно использовать инструмент rename
для этого:
rename "s/.*_//" *
Если Вы добавляете -n
это ничего не переименует и просто покажет Вам, что обошлось бы без -n
.
В ответ на комментарий порыва: мой rename
на самом деле ссылка на prename
поставленный с Debian и Ubuntu perl
пакет.
rename
не всегда то же в различных системах, и иногда его синтаксис может отличаться.
– rush
10.08.2012, 16:34
perl-rename
нисколько не характерно для Debian. Это просто не называют rename
но perl-rename
или prename
в других дистрибутивах. Это должно всегда быть в repos, хотя и каждый установлен с жемчугом также.
– terdon♦
27.04.2017, 14:06
rename
и вероятно быть установленным, явно не запрашивая пакета, который не называют просто rename
, характерно для Debian. Другие дистрибутивы Linux называют команду prename
или perl-rename
избегать беспорядка с util-linux rename
и не связывайте его пакетом жемчуга, и я не знаю ни о каком Unix не-Linux, который поставляет его под именем rename
или это поставляет его в стандартной установке под любым именем. опечатки
– Gilles 'SO- stop being evil'
27.04.2017, 14:18
"${file#*_}"
? – Pieter van Niekerk 10.08.2012, 16:23