Symlink
如何複製目錄和符號連結文件?
我有一個巨大文件的目錄(總共 ~ 1TB),我不想複製它們。但是,我想解決它們,因此將它們連結到我可以訪問的目錄層次結構(也就是我創建的目錄層次結構)中會很方便。所以
/path/to/dirs/ foo bar baz/ tri
應該複製到
~/path/to/dirs/ foo -> /path/to/dirs/foo bar -> /path/to/dirs/bar baz/ tri -> /path/to/dirs/tri
使用 GNU:
cd ~/path/to/dirs || exit 1 find /path/to/dirs -type d -printf %P\\0 | xargs -0 mkdir -p find /path/to/dirs -type f -print0 | xargs -0 cp --symbolic-link --parents --target-directory=.
使用 GNU coreutils(即在非嵌入式 Linux 或 Cygwin 上):
cp -al /path/to/dirs ~/path/to/dirs
如果您
cp
沒有-l
選項,請先創建目錄層次結構,然後再創建符號連結:find /path/to/dirs -type d -exec sh -c 'for x do mkdir "$HOME$x"; done' _ {} + find /path/to/dirs ! -type d -exec sh -c 'for x do ln -s "$x" "$HOME$x"; done' _ {} +
如果您願意,可以將這兩個傳遞組合成一個命令:
find /path/to/dirs -exec sh -c ' for x do if [ -d "$x" ]; then mkdir "$HOME$x" else ln -s "$x" "$HOME$x" fi done ' _ {} +