我有一个Dir1
包含多个子目录和文件的目录。我打算将其复制到Dir1
,Dir2
以便其中的所有文件都只是空文件,但文件名与 Dir1 相同。
然后我打算将 Dir2 推送到 github,向用户解释示例数据结构和文件名。
是否有命令以仅将文件复制到目标文件为空但文件名相同的方式?
答案1
使用 GNU coreutils(例如,在非嵌入式 Linux 或 Cygwin 上),它就像这样简单
cp -a --attributes-only Dir1 Dir2
答案2
或者更复杂,但使用单个文件系统传递(为了获得更多的可移植性,~
应该写为$HOME
)
find . \( -type d -exec mkdir -p "~/elsewhere/{}" \; \
-o -type f -exec touch "~/elsewhere/{}" \; \)
这里的复杂性在于布尔逻辑(这可能对学习有一些好处)和优先级(也很好了解),以及如何find
通过 和后续操作之间的隐式 AND-type
以及 OR 的出现来实现这些概念-o
。
答案3
cd /path/to/oldroot
find . -type d -exec mkdir -p \"/path/to/newroot/{}\"\;
find . -type f -exec touch \"/path/to/newroot/{}\"\;