ls | sed -n -r 's/banana_(.*)_([0-9]*).asc/mv & banana_\2_\1.asc/gp' | sh
Команда ls | sed -n -r 's/banana_(.*)_([0-9]*).asc/mv & banana_\2_\1.asc/gp' | sh используется для переименования файлов, содержащих строку «banana_» в их именах.
Пояснение:
— ls выводит список файлов и папок в текущем каталоге.
— sed выполняет поиск и замену с использованием регулярных выражений.
— -n отключает автоматический вывод строк.
— -r включает расширенные регулярные выражения.
— s/old/new/g заменяет все вхождения «old» на «new».
— & в замене указывает на найденную строку.
— banana_(.*)_([0-9]*).asc — регулярное выражение для поиска строк вида «banana_что-то_число.asc».
— mv — команда для перемещения или переименования файлов.
— g в конце регулярного выражения указывает на замену всех вхождений в строке.
— p в конце команды sed указывает на печать измененных строк.
— sh выполняет полученные команды в командной оболочке.
Альтернативой может быть использование команды find с опцией -exec. Например: find . -type f -name 'banana_*.asc' -execdir mv {} banana_2_1.asc \; переименует все файлы, начинающиеся с «banana_», в «banana_2_1.asc».
