GNU/Linux >> Znalost Linux >  >> Linux

Nahraďte symbolické odkazy soubory

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


Linux
  1. Cat soubory s adresářem?

  2. Nahradit nový řádek nulou?

  3. Linux – Aktualizace Tar.gz denně pouze se změněnými soubory?

  1. Nahradit manuálové stránky Tealdeerem v Linuxu

  2. Chování cd/bash na symbolických odkazech

  3. Použití find a tar se soubory se speciálními znaky v názvu

  1. N Snadný způsob, jak nahradit duplicitní soubory pevnými odkazy?

  2. Zálohujte své soubory pomocí rsync

  3. Najít soubory a rozbalit je (s mezerami)