На моем компьютере с Ubuntu у меня есть каталоги и текстовые файлы, как показано ниже.
root@homelinuxpc:/home/admin/dir1# ls
dir2 dir3.txt test1.txt test2.txt
root@homelinuxpc:/home/admin/dir1# cd dir2
root@homelinuxpc:/home/admin/dir1/dir2# ls
test3.txt test4.txt
ПРИМЕЧАНИЕ. У меня есть рекурсивные каталоги, такие как dir2 внутри dir1. И имя каталога также как dir3.txt.
Я хочу использовать команду Linux find для:
- Поиск только файлов с расширением .txt. (Необходимо исключить каталоги)
- Скопируйте все эти файлы вместе с их родительской структурой каталогов в какое-то место
Я попробовал следующие варианты:
find -name "*.txt" -not -path "./directory/*" -exec cp {} /beta/ \;
В В приведенном выше случае я могу копировать только файлы * .txt. Невозможно сохранить структуру родительского каталога.
А также я пытался использовать
find . -name '*.txt' | cpio -pdm /target
. В приведенном выше случае я могу найти и скопировать все файлы * .txt, а также каталог dir3.txt
Как это исправить с помощью альтернативных команд поиска?