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