30 Stimmen

Symbolischer Link, der eine Verzeichnishierarchie kopiert

Was ist der einfachste Weg auf Linux, um ein Verzeichnisbaum zu "kopieren", sodass ein neuer Verzeichnisbaum erstellt wird, während alle "Dateien" nur Symlinks sind, die auf die tatsächlichen Dateien im Quellverzeichnis verweisen?

cp -s funktioniert nicht rekursiv.

1 Stimmen

1voto

Wenn du das Gefühl hast, deine Hände schmutzig zu machen Hier ist ein Trick, der automatisch den Zielordner, Unterordner erstellt und alle Dateien rekursiv verknüpft.

Im Ordner, in dem sich die Dateien befinden, die du verlinken und Unterordner erstellen möchtest:

  1. Erstelle eine Datei shell.sh:

    nano shell.sh

  2. Kopiere und füge diesen Zauber ein:

#!/bin/bash

export DESTINATION=/dein/ziel/ordner/
export TARGET=/dein/ziel/ordner/

find . -type d -print0 | xargs -0 bash -c 'for DIR in "$@"; 
do
  echo "${DESTINATION}${DIR}"
  mkdir -p "${DESTINATION}${DIR}"        
  done' -

find . -type f -print0 |  xargs -0 bash -c 'for file in "$@"; 
do
  ln -s  "${TARGET}${file}"  "${DESTINATION}${file}"
   done' -
  1. Speichere die Datei Strg+O

  2. Schließe die Datei Strg+X

  3. Mache dein Skript ausführbar chmod 777 shell.sh

  4. Führe dein Skript aus ./shell.sh

Fröhliches Hacken!

0voto

Tanktalus Punkte 20746

Ich weiß, die Frage bezog sich auf die Shell, aber da Sie Perl von der Shell aus aufrufen können, habe ich ein Tool geschrieben, um etwas sehr Ähnliches zu tun, und habe es vor ein paar Jahren auf perlmonks veröffentlicht. In meinem Fall wollte ich im Allgemeinen, dass Verzeichnisse Links bleiben, bis ich anders entscheide. Es wäre eine ziemlich banale Änderung, dies automatisch und rekursiv zu tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X