【问题标题】:linux shell script to copy directory tree and link files [closed]linux shell脚本复制目录树和链接文件[关闭]
【发布时间】:2014-07-13 01:26:39
【问题描述】:

我希望能够创建目录树的副本并软链接上面的文件。

例如,来自

/home/user/origin/a/sub/file.txt

我想买

/home/user/destination/a/sub/file.txt

这是一个指向原始 file.txt 的链接。

我用

测试过
find /home/user/origin/ -type d -printf "mkdir -vp '/home/user/destination%p'\n" -o -type f -printf "ln -vs '%p' '/home/user/destination%p'\n" | sh

但它有两个问题:

  1. 我想从起点复制到终点,它从起点复制到/home/user/destination/home/user/origin。这不是什么大问题,因为我以后可以移动它
  2. 如果文件名类似于

    五十年后我们都会成为小鸡.txt

它停止工作,因为 '.

【问题讨论】:

    标签: linux shell hyperlink directory


    【解决方案1】:

    假设我了解您要做什么,使用-exec 似乎更容易

    find /home/user/origin/ \
    -type d -exec sh -c 'mkdir -v "/home/user/destination/${0#/home/user/origin/}"' {} \; \
    -o \
    -type f -exec sh -c 'ln -vs "$0" "/home/user/destination/${0#/home/user/origin/}"' {} \;
    

    注意-or 的优先级低于隐含的-and 在这里很重要。

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2014-11-22
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      相关资源
      最近更新 更多