递归地用实际文件替换所有链接(gnu)

递归地用实际文件替换所有链接(gnu)

为了在 Linux 文件上运行 Code dx,我需要将所有链接替换为实际文件。已经很多年没有在 Linux 中工作了,我对术语感到困惑。这两天一直在寻找答案。有一个简单的脚本吗?我有 2500 万行代码。

原始目录:afile bfile clink_to_cfile_in_another_dir(可能遍历多个链接)

期望的最终结果:afile bfile cfile

我已经做到了这一点,但还不太有效:

find . -type l -exec "echo 'replacing {}'; cp -LR '{}' '{}'.deref rm '{}' \;"

答案1

有几个问题

  • 需要\;在引号之外,它是 exec 的一个单独的参数
  • ;你在最后的 rm 命令之前缺少了一个
  • exec 将尝试将整个命令作为一个命令运行。

要运行这样的多个命令,您可以执行 shell 并将脚本传递给它

find . -type l -exec /bin/bash -c "echo 'replacing {}'; cp -LR '{}' '{}.deref' ; rm '{}'" \;

似乎有效。

相关内容