移动或复制选择性文件,同时重新创建目录结构

移动或复制选择性文件,同时重新创建目录结构

我正在寻找可以的命令或命令行获取文件列表子树(通过管道等)并复制/将他们转移到新的目的地, 尽管重新创建源目录结构

  1. 它应该保留所有相关的文件属性;包括时间戳、xattrs 和硬链接。
  2. 新重新创建的目录还应该“保留”它们的时间戳(使用touch或其他东西)。

在我的特定场景中,我用于fdupes查找两个源树a和之间的重复项b,而然后我希望将树中的重复项移动a到其他地方,同时保留其目录结构。
但为了简单起见, 的输出find . -type f产生了我想要使用的输入。 (只要明白“使用 rsync”不是我可以使用的解决方案——我认为。)

我觉得我需要编写一个稍微复杂的find | xargs / while read line循环,但也许我缺少一个很酷的工具,并且有人有更好的解决方案使用rename或类似的(或者已经有一个他们可以共享的脚本)?

非常感激!

输入示例:

cat <<THEEND | <program-or-script> /target/directory/
./subtree/with/a/file
./subtree/with/some/other/file
./subtree/with/even/more/files
THEEND

想要的结果:

$ find /target/directory/ -type f
/target/directory/subtree/with/a/file
/target/directory/subtree/with/some/other/file
/target/directory/subtree/with/even/more/files

它应该不是./subtree/with/an/ignored/file从源树中复制或移动假设。
(它也不需要清理源树中剩余的任何空目录。)

相关内容