复制整个递归目录结构的最佳方法是什么,其中所有文件都被复制为符号链接?
换句话说,副本应该反映原始目录的整个目录(子)结构,但每个文件应该只是一个符号链接。
我猜...首先您要创建目录...
cd "$source"
find . -type d -exec mkdir -p "$target/{}" \;
接下来,制作您的符号链接...
cd "$source"
find . -type f -print | (
cd "$target"
while read one; do
deep=$(echo "${one:2}" | sed 's:[^/][^/]*:..:g')
ln -s "${deep:3}/${one:2}" "$(basename "$one")"
done
)
请注意,如果您的文件名中有换行符或其他奇怪的字符,这将失败。我想不出一个快速的方法来解决这个问题(我的意思是在 a 中执行此find -exec
操作),因为您需要为每个目录级别以不同的方式计算 $deep 。
此外,这是未经测试的,我不打算测试它。如果它能给你灵感,那就太好了。:)
这不是建立符号链接的解决方案,但它会建立硬链接。
cp -rl $src $dst
缺点: