GNU/Linux >> Linux の 問題 >  >> Linux

シンボリック リンクをファイルに置き換える

-L を正しく理解していれば cp の旗 コマンドは、あなたが望むことを正確に実行する必要があります。

すべてのシンボリック リンクをコピーするだけで、シンボリック リンクが指すファイルに置き換えられます。


tar を使用してデータを新しいディレクトリにコピーする方が簡単かもしれません.

-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.

このようなものを使用できます

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

「簡単」の定義について:

#!/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

リンク名を引数としてこのスクリプトを実行します。 find . -type l -exec /path/tos/script {} + まで


Linux
  1. rsyncを使用してファイルをバックアップします

  2. 特定のファイルを除く tar/gzip

  3. シンボリックリンクをコピーするには?

  1. ディレクトリ付きの猫ファイル?

  2. 名前に特殊文字を含むファイルでの find および tar の使用

  3. 1 つのコマンドでファイルのすべてのシンボリック リンクを削除する

  1. 改行をNulに置き換えますか?

  2. N重複ファイルをハードリンクに置き換える簡単な方法は?

  3. ファイルを検索して tar (スペースを含む)