我正在寻找可以的命令或命令行获取文件列表子树(通过管道等)并复制/将他们转移到新的目的地, 尽管重新创建源目录结构。
- 它应该保留所有相关的文件属性;包括时间戳、xattrs 和硬链接。
- 新重新创建的目录还应该“保留”它们的时间戳(使用
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
从源树中复制或移动假设。
(它也不需要清理源树中剩余的任何空目录。)