【问题标题】:Move specific folders to a new location and leave a symlink at the old location to the new folder将特定文件夹移动到新位置,并在旧位置留下指向新文件夹的符号链接
【发布时间】:2020-03-14 20:43:58
【问题描述】:

我在/var/CommuniGate/Accounts/*/ 中有很多名为Archive.folder 的文件夹。如何将它们移动到新位置并在旧文件夹中留下指向新位置的符号链接?

也许使用 find 和 cp 来移动它们?

find /var/CommuniGate/Accounts/ -name 'Archive.folder' -exec cp -r --parents {} . \;

这适用于移动它们并保持文件夹结构。但是怎么能和ln同时留下一个链接呢?该链接也应替换旧文件夹。

我尝试过执行以下操作,如果只有一个文件夹,它就可以工作。

find /var/CommuniGate/Accounts/ -name 'Archive.folder' -delete

find * -name 'Archive.folder' | xargs -0 -iDIR sh -c 'mkdir -p /$(dirname DIR); ln -s -t /$(dirname DIR) $PWD/DIR'

我得到permission denied 用于sh -c 用于第一个目录之后的所有内容。

【问题讨论】:

    标签: shell find cp mv


    【解决方案1】:

    您可以将文件移动到所需位置,然后创建符号链接:

    • mv /var/CommuniGate/Accounts/Archive.folder* new_location/
    • ln -s new_location/Archive.folder* .

    【讨论】:

    • 我知道。但是 Accounts 有很多子文件夹,每个子文件夹都包含一个 Archive.folder。
    • 好的,我明白了,然后你可以在你的新位置重复使用你的 find 命令
    • 之前需要删除文件夹吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多