Jika saya memahami Anda dengan benar, -L
bendera cp
perintah harus melakukan apa yang Anda inginkan.
Cukup salin semua symlink dan itu akan menggantinya dengan file yang mereka tuju.
Mungkin lebih mudah menggunakan tar untuk menyalin data ke direktori baru.
-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.
Anda dapat menggunakan sesuatu seperti ini
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
Untuk beberapa definisi "mudah":
#!/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
Jalankan skrip ini dengan nama tautan sebagai argumen, mis. melalui find . -type l -exec /path/tos/script {} +
Bagaimana cara melihat lebih banyak riwayat saya di Layar di Linux?
Cara memeriksa apakah proxy Socks5 berfungsi