如何通过文件扩展名递归复制文件并保留目录结构?

如何通过文件扩展名递归复制文件并保留目录结构?

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

我需要目录结构保持完整,并且我需要忽略除以 结尾的文件之外的文件.txt

答案1

您可以使用寻找太平洋保险协会去做这个

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

(-updm for overwrite destination content.)

答案2

cd /source/path
find -type f -name \*.txt -exec install -D {} /dest/path/{} \;

答案3

对我来说最简单的方法:

cp --parents -R jobs/**/*.xml ./backup/

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

另外,请确保在 bash 中启用了递归 glob:

shopt -s globstar

答案4

你先把它复制过来

cp -r /old/folder /new/folder

然后进入新文件夹并运行

find . -type f ! -iname "*.txt" -delete

要不就

cp -r /old/folder /new/folder && find . -type f ! -iname "*.txt" -delete

编辑:好的,您需要一个过滤命令(我没有测试过这个,因为我的系统没有这个cpio命令!)。这是我找到它的地方:http://www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-Files

find . -name "*.txt" -print0 |
     cpio -pmd0 /dest-dir

先测试一下,因为我还没有试过。如果有人能验证一下,那就太好了。

相关内容