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

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