【发布时间】:2018-06-08 08:49:58
【问题描述】:
这是一个关于在find 中使用cp 同时保留目录结构的具体问题。这是看起来应该工作的方式,但也许有一种方法可以做得更好。我之所以使用find,是因为我只想复制某个年代的文件。
我有一个这样的目录结构。操作系统为 Ubuntu 16.04。
folders
folder1
file1.txt
folder2
file1.txt
file2.txt
folder3
file1.txt
我在find 命令中使用cp 命令,所以...
find "$pathtofolder"/* -mmin +"$timeinmins" -type f -name "*.txt" -exec cp --parents {} /var/www/website/archives \;
--parents 标志将整个路径复制到文件,所以我得到类似archives/var/www/website/folders/folder1/file1.txt 的内容。这不是我想要的。我只想要archives/folder1/file1.txt。
-R 和 -a 标志在 find 内的此语句中不起作用。当我使用其中任何一个时,它们似乎完全阻止了复制的发生。
我做错了什么?有没有更好的方法来做到这一点?
非常感谢。
【问题讨论】:
-
@tripleee 不完全重复,因为 OP 发现了
cp的--parents选项。他的问题其实是在复制文件的时候去掉第一层路径。 -
那里有多个答案可以解决这个特定方面,包括
rsync和tar。 -
我找到的答案,包括你提到的那个,只是一个简单的副本。我只想复制某些文件。由于我没有太多 bash 经验,你可能是对的,我只需要简单地复制整个目录,然后在
find中选择性地选择rm。