У меня есть 2-3 уровня и несколько папок, но всего есть файл с именем L_data.txt
(среди других файлов). Я хотел бы скопировать только те L_data.txt
вместе с их родительскими папками без каких-либо других файлов в другое место. Как я могу это сделать?
Например:
./PycharmProjects/folderA/L_data.txt
./PycharmProjects/folderB/L_data.txt
.
.
./PycharmProjectsCluster/folderQ/L_data.txt
./PycharmProjectsCluster/folderR/L_data.txt
.
.
Я нашел этот пост и этот пост , но он перемещает все файлы без папок. Спасибо за помощь.
Допустим, я хочу получить копию каждого L_data.txt
в new_dir
с сохранением его родителей. Вот моя структура каталогов:
$ tree
.
├── new_dir
├── PycharmProjects
│ ├── folderA
│ │ ├── foo.txt
│ │ └── L_data.txt
│ └── folderB
│ ├── foo.txt
│ └── L_data.txt
└── PycharmProjectsCluster
└── folderQ
├── foo.txt
└── L_data.txt
6 directories, 6 files
Вы можете видеть, что у меня есть два файла в каждом каталоге, L_data.txt
и foo.txt
.
Мы можем использовать команда find
, чтобы найти все файлы с именем L_data.txt
. Затем, используя опцию - exec
, мы запустим cp --parents
, чтобы он копировал файлы в новое место назначения, сохраняя их родителей.
find . -name L_data.txt -exec cp --parents -t new_dir/ {} +
Результат:
$ tree new_dir/
new_dir/
├── PycharmProjects
│ ├── folderA
│ │ └── L_data.txt
│ └── folderB
│ └── L_data.txt
└── PycharmProjectsCluster
└── folderQ
└── L_data.txt
5 directories, 3 files