我想将某个目录中的目录结构复制到另一个目录中,但不复制任何实际文件。我想要用同名的空白文件或指向原始位置的符号链接来代替这些文件。
在 OS X 上我该怎么做?命令行工具 (rsync/find/tar/whatever)、shell 脚本等都可以接受,但我必须购买的软件可能不行。
答案1
user@osx:~/from$ find . -type d -exec mkdir -p ~/to/{} \;
user@osx:~/from$ find . -type f -exec ln -s ~/from/{} ~/to/{} \;
或者
user@osx:~/from$ find . -type f -exec touch ~/to/{} \;
答案2
尝试一下lndir
。从它的手册页中:
The lndir program makes a shadow copy todir of a directory tree
fromdir, except that the shadow is not populated with real files but
instead with symbolic links pointing at the real files in the fromdir
directory tree.
答案3
对我有用的另一个解决方案是使用rsync
并排除所有文件,例如
$ rsync -a /path/from/ /path/to/ --include \*/ --exclude \*
指定--include \*/
应复制所有目录,并--exclude \*
指定应从复制中排除所有文件。
这样做的好处是,新的目录层次结构具有与原始目录相同的属性、时间戳、权限等。
答案4
这将找到 temp 内的目录,从中删除开头的 /home/bryan/ 并创建新的目录
for i in `find /home/bryan/temp -type d| sed 's/\/home\/bryan\///g'`
do mkdir $i
done
我建议一次输入一行代码(这样分号(未显示)将被正确放置)