Помогла команда basename. Написал вот такую простенькую команду, которая сделала за меня всю черновую работу.:
for AA in *.u1conflict; do mv $AA `basename $AA .u1conflict`;done
По порядку:
for AA in *.u1conflict; do - цикл по всем файлам с расширением u1conflict.
mv $AA - переименовывает переданный ей файл, $AA - первый параметр, исходное имя. Обратите внимание на то, что в for было просто AA, а при использовании в качестве параметра добавляется "$"!
`команда` - именно "обратные" апострофы (клавиша с тильдой, самая левая в верхнем ряду стандартной клавиатуры), сначала выполняется заключенная в них команда, а потом ее вывод становится параметром другой команды, в данном случае - вторым параметром команды mv, то есть новым именем файла.
basename $AA .u1conflict - берет переданное ей имя файла, отсекает от него, если есть, имена каталогов слева от собственно имени файла, и, если указан, то отсекает и суффикс, он же - расширение. Опять же - чтобы не возникло ошибки "файл не найден", не забываем про "доллар" перед именем переменной цикла.
;done - конец цикла
При желании эту команду можно доработать, чтобы она выполняла рекурсивный обход каталогов и тем самым полностью автоматизировать процесс. Но сейчас мне лень этим заниматься.
Много дополнительной интересной информации можно найти здесь.
Дополнительный совет: man rename
Комментариев нет:
Отправить комментарий
Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.