Как рекурсивно копировать файлы по расширению
Если вам интересно, как рекурсивно копировать файлы с определенным расширением (например, .txt
, .php
, .java
), следующее руководство могу помочь тебе. Под рекурсивным копированием файлов я подразумеваю, что вы копируете файлы, расположенные в текущем каталоге, а также его подкаталоги, в другое место с такой же структурой каталогов.
Ваша первая (неудачная) попытка может заключаться в использовании команды cp
с опцией -r
.
$ cp -r *.txt /path/to/destdir
Однако приведенная выше команда скопирует файлы *.txt
только в текущий каталог верхнего уровня, но не ни в один из его подкаталогов. Так что это не правильный способ сделать это.
Правильный способ рекурсивного копирования файлов — использовать команду cpio
, которая представляет собой инструмент Linux, копирующий файлы в архивы и из них. Приведенная ниже команда демонстрирует, как копировать файлы .txt
из одного дерева каталогов в другое.
$ find /path/to/srcdir -name '*.txt' | cpio -pdm /path/to/destdir
Параметр
-p
включает операцию рекурсивного копирования.-
Параметр
-d
создает ведущие каталоги там, где это необходимо. Параметр
-m
сохраняет предыдущее время изменения файла, пока файлы копируются в место назначения.