удар
С чистым Bash, удаляя все до первого -
:
for f in *; do mv -- "$f" "${f#*- }"; done
Если вы хотите удалить все до последнего -
используйте ##
вместо #
.
Чтобы сломать это:
- Параметр
for
выполняет перебор всех файлов в текущем каталоге (*
) и вызывает mv
для каждого найденного файла.
--
говорит mv
прекратить синтаксический анализ параметров и является защитой от того, чтобы файлы, начинающиеся с -
не интерпретировались как параметры (например, файл с именем -i
заставит mv
запросить вас перед перемещением).
${f#*- }
- это манипулирование строками, которое удаляет ненужную часть из каждого имени файла.
- Все переменные заключены в кавычки, чтобы не допустить повторения команды в именах файлов с пробелами или символами глобализации. Всегда заключайте в кавычки ваши переменные.
rename
С rename
которое обычно встречается в дистрибутивах Linux, например, если вы хотите указать исполнителя:
rename 's/Versailles - //' *
Или, если вы хотите удалить все до последнего -
:
rename 's/.*- //' *
Zsh
В Zsh и zmv
, которые вам нужно загрузить с autoload -U zmv
:
zmv 'Versailles - (*)' '$1'