查找并复制具有相对路径的文件

时间:2014-05-28 14:56:38

标签: linux copy find

在此Stackoverflow question,它显示了如何复制文件,它将递归到子目录中以复制文件。如何复制文件并在副本中包含相对路径?

例如,

find /path/to/directory/or/just/dot -name '*somepartoffilename*' -exec cp {} /path/you/want/to/copy/to \;

因此,如果您有/path/to/directory/a/somepartoffilename.txt/path/to/directory/b/somepartoffilename.txt,那么您最终只会在/path/you/want/to/copy/to中找到其中一个文件。

2 个答案:

答案 0 :(得分:2)

你走了:

$ tree
.   
├── a
│   └── foo
└── b
    └── foo

2 directories, 2 files
$ find . -type f -exec bash -c 'path={}; d=/tmp/dest/$(dirname $path); mkdir -p $d ; cp $path $d' \;
$ tree /tmp/dest/
/tmp/dest/
├── a
│   └── foo
└── b
    └── foo

2 directories, 2 files

答案 1 :(得分:1)

@Grapsus有一个很好的答案,但它不适用于包含空格的文件。这个确实:

find . -type f -exec bash -c 'path="{}"; d=/tmp/dest/$(dirname "$path"); mkdir -p "$d" ; cp "$path" "$d"' \;