Pokud jsem vám správně rozuměl -L
vlajka cp
příkaz by měl dělat přesně to, co chcete.
Stačí zkopírovat všechny symbolické odkazy a nahradí je soubory, na které odkazují.
Může být jednodušší použít tar ke zkopírování dat do nového adresáře.
-H (c and r mode only) Symbolic links named on the command line will be followed; the target of the link will be archived, not the link itself.
Můžete použít něco takového
tar -hcf - sourcedir | tar -xf - -C newdir
tar --help:
-H, --format=FORMAT create archive of the given format
-h, --dereference follow symlinks; archive and dump the files they point to
Některé definice slova „snadné“:
#!/bin/sh
set -e
for link; do
test -h "$link" || continue
dir=$(dirname "$link")
reltarget=$(readlink "$link")
case $reltarget in
/*) abstarget=$reltarget;;
*) abstarget=$dir/$reltarget;;
esac
rm -fv "$link"
cp -afv "$abstarget" "$link" || {
# on failure, restore the symlink
rm -rfv "$link"
ln -sfv "$reltarget" "$link"
}
done
Spusťte tento skript s názvy odkazů jako argumenty, např. až find . -type l -exec /path/tos/script {} +
Jak mohu zobrazit více své historie na obrazovce v systému Linux?
Jak zkontrolovat, zda funguje proxy server Socks5