Advertisement
Guest User

Untitled

a guest
Jul 25th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #!/bin/sh
  2. set -e
  3. for link; do
  4. test -h "$link" || continue
  5.  
  6. dir=$(dirname "$link")
  7. reltarget=$(readlink "$link")
  8. case $reltarget in
  9. /*) abstarget=$reltarget;;
  10. *) abstarget=$dir/$reltarget;;
  11. esac
  12.  
  13. rm -fv "$link"
  14. cp -afv "$abstarget" "$link" || {
  15. # on failure, restore the symlink
  16. rm -rfv "$link"
  17. ln -sfv "$reltarget" "$link"
  18. }
  19. done
  20.  
  21. -H (c and r mode only) Symbolic links named on the command line will
  22. be followed; the target of the link will be archived, not the
  23. link itself.
  24.  
  25. tar -hcf - sourcedir | tar -xf - -C newdir
  26.  
  27. tar --help:
  28. -H, --format=FORMAT create archive of the given format
  29. -h, --dereference follow symlinks; archive and dump the files they point to
  30.  
  31. find / -maxdepth 2 -type l -print
  32.  
  33. find / -maxdepth 2 -type l -exec ./ReplaceSymLink.sh {} ;
  34.  
  35. find . -type l -exec cp --dereference --recursive '{}' '{}'.dereferenced ;
  36.  
  37. find . -type l -exec bash -c "echo 'Replacing {} ...'; cp -LR '{}' '{}'.dereferenced; rm '{}'; mv '{}'.dereferenced '{}'" ;
  38.  
  39. for i in *; do link=$(readlink $i) && rm $i && mv $link $i; done
  40.  
  41. "for file in `ls`; do cp -L $file scratchdir/$file; done; mv scratchdir/* ./"
  42.  
  43. before:
  44. > find . -type l | wc -l
  45. 358
  46.  
  47. > for link in `find . -type l` ; do echo "$link : "; ls -al $link ; cp $link notalink; unlink $link; mv notalink $link ; ls -al $link; done
  48. ...
  49.  
  50. after:
  51. > find . -type l | wc -l
  52. 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement