2009-08-28 8 views
90

Chcę Link (ln -s) wszystkie pliki, które są w/mnt/usr/lib/do/usr/lib/LINUX: Link wszystkie pliki z jednego do innego katalogu

Istnieje wiele plików, jak to zrobić szybko? :)

+0

Ile plików to "dużo" i jak szybko uważasz, że "szybko"? –

+3

To jest 50:50 czy pasowałoby do "serverfault" lub "superuser", ale to nie jest programowanie, więc nie dla stackoverflow. –

Odpowiedz

145
ln -s /mnt/usr/lib/* /usr/lib/ 

Chyba należy to do superużytkownika.

+1

Nie obejmuje to ukrytych plików i łączy całe katalogi. Jeśli któryś z nich nie jest tym, czego potrzebujesz, zobacz moją odpowiedź. W przeciwnym razie jest to najkrótsza droga. – Cascabel

+0

Masz rację. Ale biblioteki nie są zwykle ukrywane. W każdym przypadku, w które zaangażowane są pliki dotfile, twoje rozwiązanie jest bardziej przydatne. – flokra

+1

będzie wskazywał na inny folder na stałe? – nmkyuppie

11

ln -s/mnt/usr/lib/*/usr/lib/

14

Zaksięgowane rozwiązania nie będzie link żadnych ukrytych plików. Aby włączyć je, spróbuj tego:

cd /usr/lib 
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done 

Gdyby zdarzy ci się chce rekursywnie utworzyć katalogi i pliki tylko łącza (tak, że jeśli utworzyć plik w katalogu, to naprawdę jest w /usr/lib nie /mnt/usr/lib) można to zrobić:

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 
+1

Wierzę, że to powinno również działać jako sposób na ukrywanie się w ukrytych plikach, jeśli rozszerzony globbing został włączony w bashu. Pasuje do wszystkiego zaczynając od kropki, po czym następuje coś innego niż nic lub inna kropka (tj. Wyklucza '. /' I '../'): 'ln -s/mnt/usr/lib /.! (|.) */usr/lib' – Cascabel

68

GNU cp ma możliwość utworzenia dowiązania zamiast kopiowania.

cp -rs /mnt/usr/lib /usr/ 

Uwaga: nie znaleziono rozszerzenia GNU in POSIX cp.

+2

Twoim bieżącym katalogiem powinna być/usr/aby utworzyć dowiązanie symboliczne w ten sposób –

+0

@caf Jeśli docelowy jest istniejącym folderem, to folder lib jest tworzony wewnątrz w katalogu/usr / –