Dies schließt keine versteckten Dateien ein und verknüpft ganze Verzeichnisse. Wenn einer dieser Punkte nicht Ihren Wünschen entspricht, lesen Sie meine Antwort. Ansonsten ist es der kürzeste Weg.
Cascabel
Du hast recht. Aber Bibliotheken sind normalerweise nicht versteckt. In jedem Fall handelt es sich um Dotfiles. Ihre Lösung ist praktischer.
1
Wird es dauerhaft auf den anderen Ordner verweisen?
nmkyuppie
@YuPPie Ich denke, es wird nur ein Hardlink zu jeder Datei im Verzeichnis erstellt. (das wollte ich heute, also +1: D)
Anzeigename
2
@SargeBorsch Es werden symbolische Links erstellt (Hardlinks sind unterschiedlich).
Jsejcksn
90
GNU cphat die Option, Symlinks zu erstellen, anstatt sie zu kopieren.
cp -rs /mnt/usr/lib /usr/
Beachten Sie, dass dies eine GNU-Erweiterung ist, die in POSIXcp nicht gefunden wurde .
Die veröffentlichten Lösungen verknüpfen keine versteckten Dateien. Versuchen Sie Folgendes, um sie einzuschließen:
cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
Wenn Sie rekursiv passieren zu wollen, auf die Verzeichnisse und nur Link - Dateien erstellen (so , dass , wenn Sie eine Datei in einem Verzeichnis zu erstellen, ist es wirklich in /usr/libnicht /mnt/usr/lib), können Sie dies tun:
cd /usr/lib
find /mnt/usr/lib -mindepth 1 -depth -type d -printf "%P\n" | while read dir; do mkdir -p "$dir"; done
find /mnt/usr/lib -type f -printf "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
Ich glaube, dies sollte auch als Platzhalter für versteckte Dateien funktionieren, wenn Sie das Globbing in Bash aktiviert haben. Es passt zu allem, was mit einem Punkt beginnt, gefolgt von etwas anderem als nichts oder einem anderen Punkt (dh es schließt ./und aus ../):ln -s /mnt/usr/lib/.!(|.)* /usr/lib
Antworten:
Ich denke, das gehört allerdings dem Superuser.
quelle
GNU
cp
hat die Option, Symlinks zu erstellen, anstatt sie zu kopieren.Beachten Sie, dass dies eine GNU-Erweiterung ist, die in POSIX
cp
nicht gefunden wurde .quelle
quelle
Die veröffentlichten Lösungen verknüpfen keine versteckten Dateien. Versuchen Sie Folgendes, um sie einzuschließen:
Wenn Sie rekursiv passieren zu wollen, auf die Verzeichnisse und nur Link - Dateien erstellen (so , dass , wenn Sie eine Datei in einem Verzeichnis zu erstellen, ist es wirklich in
/usr/lib
nicht/mnt/usr/lib
), können Sie dies tun:quelle
./
und aus../
):ln -s /mnt/usr/lib/.!(|.)* /usr/lib