如何按文件扩展名递归复制文件,保留目录结构?

unc*_*age 85 linux cp find

在 Linux 命令行中,我想将一组(非常大的).txt文件从一个目录(及其子目录)复制到另一个目录。

我需要目录结构保持完整,并且我需要忽略除以.txt.

小智 107

您可以使用findcpio来执行此操作

cd /top/level/to/copy
find . -name '*.txt' | cpio -pdm /path/to/destdir

(-updm for overwrite destination content.)
Run Code Online (Sandbox Code Playgroud)


小智 9

cd /source/path
find -type f -name \*.txt -exec install -D {} /dest/path/{} \;
Run Code Online (Sandbox Code Playgroud)


icy*_*sor 6

对我有用的最简单的方法:

cp --parents -R jobs/**/*.xml ./backup/
Run Code Online (Sandbox Code Playgroud)

一个问题是您必须先导航到“所需”目录,以便“父路径”正确。

还要确保您在 bash 中启用了递归 glob:

shopt -s globstar
Run Code Online (Sandbox Code Playgroud)


小智 5

另一种方法

find . -name '*.txt' -exec rsync -R {} path/to/dext \;