Bash-скрипты. Урок 8


Всем привет!
Тут предыдущий урок
Поехали)

Задача:
Переименовать файлы в папках и их подпапках с расширением .txt в .log

Решение:
find ./ -type f -name '*.txt'| sed 'p;s/.txt$/.log/' | xargs -n2 mv

Пояснение:
1. find ./ -type f -name '*.txt'
./ – текущая директория
-type f – искать только файлы
-name '*.txt' – поиск файлов по ШАБЛОНу

2. sed 'p;s/.txt$/.log/'
p; – вы­да­вать не толь­ко ре­зуль­тат замены, но и ис­ход­ный строку до замены
s/.txt$/.log/ – за­ме­нить что .txt$ (где $ конец строки) на что .log

3. xargs -n2 mv
-n2 – при­нять один по­ток и «рас­па­рал­ле­лить» его на 2. Другими словами, для следующей команды будет идти старое имя файла, а затем новое имя файла.
mv – команда mv перемещает файл в новое место. Она также может использоваться для переименования файлов. Например, mv file newfile переименует файл file в newfile

Добавить комментарий