复制(或移动)一些文件及其父目录

复制(或移动)一些文件及其父目录

我有 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

假设我想要每个副本,L_data.txtnew_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.txtfoo.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

相关内容