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