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».