Как переименовать файлы с помощью команды sed в терминале

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

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *