
Всем привет!
Тут предыдущий урок
Поехали)
Задача:
Переименовать файлы в папках и их подпапках с расширением .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