GNU/Linux >> Belajar Linux >  >> Linux

Ganti Tautan Simbolik dengan File

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 {} +


Linux
  1. Ganti halaman manual dengan Tealdeer di Linux

  2. File Cat Dengan Direktori?

  3. Linux – Memperbarui Tar.gz Setiap Hari Hanya Dengan File yang Diubah?

  1. Cadangkan file Anda dengan rsync

  2. Temukan file dan tar (dengan spasi)

  3. Perilaku cd/bash pada tautan simbolik

  1. Menggunakan find dan tar dengan file dengan karakter khusus pada namanya

  2. Bagaimana cara membuat tautan simbolik ke semua file (kelas file) dalam direktori?

  3. Bagaimana cara tar file dengan urutan yang diurutkan?