Копировать (или переместить) некоторые файлы с их родительскими каталогами

У меня есть 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
.
.

Я нашел этот пост и этот пост , но он перемещает все файлы без папок. Спасибо за помощь.

1
задан 22 June 2020 в 08:45

1 ответ

Допустим, я хочу получить копию каждого 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
0
ответ дан 30 July 2020 в 22:22

Другие вопросы по тегам:

Похожие вопросы: