Unix 查找并复制到多个子目录

Unix 查找并复制到多个子目录,unix,terminal,find,Unix,Terminal,Find,您好,我正在尝试查找并复制到用户文件中的多个首选项文件夹,只是一个plist,但出现了一个错误。我希望有人能帮我指出,或者帮助我理解我做错了什么 find . -type d -name 'Preferences' -maxdepth 3 -exec cp -r {} /Users/ladmin/Desktop/source.plist *Library/Preferences \; 就这么跑 find . -type d -name 'Preferences' -maxdepth 3 打印

您好,我正在尝试查找并复制到用户文件中的多个首选项文件夹,只是一个plist,但出现了一个错误。我希望有人能帮我指出,或者帮助我理解我做错了什么

find . -type d -name 'Preferences' -maxdepth 3 -exec cp -r {} /Users/ladmin/Desktop/source.plist *Library/Preferences \;
就这么跑

find . -type d -name 'Preferences' -maxdepth 3
打印出我试图复制到用户名/库/首选项中的内容

然后我想将plist复制到每个用户的preferences文件夹中

我希望这对人们来说不是太复杂


谢谢Kris,我不完全确定为什么会导致错误,尽管它确实存在一些问题

find是递归的,cp-r是递归的,它们都在遍历同一棵树。您可以添加-prune测试来查找,以阻止它从找到的目录中降序 不确定这是否会对此处产生任何影响,但find通常喜欢选项,即-maxdepth排在第一位。 *库/首选项如果扩展到多个路径,除一个路径外,所有路径都将复制到最后一个路径。 但是,我认为主要的问题是,您正试图将一组名为Preferences的目录复制到单个目录中,因此实际上只有一个目录会被复制,其余的目录会被覆盖

find -maxdepth 3 -type d -name 'Preferences' -prune -exec echo cp -ivr {} /Users/ladmin/Desktop/source.plist username/Library/Preferences +
这解决了所有的第一个问题,但是当一个同名的目录已经存在时,我们还不清楚该怎么办。如果要在冲突发生时覆盖并添加一些详细信息,-iv将提示您。+加速了find for命令的执行,这些命令可以采用多个文件/目录名,如cp