Ile plików to „dużo” i jak szybko uważasz, że „szybko”?
Eric Smith
4
Jest to 50:50, niezależnie od tego, czy pasowałoby to „serverfault”, czy „superuser”, ale nie jest to programowanie, więc nie w przypadku przepełnienia stosu.
Nie obejmuje to ukrytych plików i łączy całe katalogi. Jeśli któryś z nich nie jest tym, czego chcesz, zobacz moją odpowiedź. W przeciwnym razie jest to najkrótsza droga.
Cascabel
Masz rację. Ale biblioteki zwykle nie są ukryte. W każdym razie dotfile jest bardziej przydatny.
1
czy będzie wskazywać na inny folder na stałe?
nmkyuppie
@YuPPie Myślę, że po prostu tworzy twarde łącze do każdego pliku w katalogu. (właśnie tego chciałem dzisiaj, więc +1: D)
Nazwa wyświetlana
2
@SargeBorsch Tworzy dowiązania symboliczne (dowiązania twarde są różne).
jsejcksn
90
GNU cpma opcję tworzenia dowiązań symbolicznych zamiast kopiowania.
cp -rs /mnt/usr/lib /usr/
Zauważ, że jest to rozszerzenie GNU, którego nie znaleziono w POSIXcp .
Opublikowane rozwiązania nie będą łączyły żadnych ukrytych plików. Aby je uwzględnić, 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
Jeśli chcesz rekurencyjnie tworzyć katalogi i tylko pliki z linkami (tak, że jeśli tworzysz plik w katalogu, tak naprawdę /usr/libnie jest /mnt/usr/lib), możesz 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
Uważam, że powinno to również działać jako sposób na symbole wieloznaczne w ukrytych plikach, jeśli w bashu włączono rozszerzone globowanie. Dopasowuje wszystko zaczynające się od kropki, po której następuje coś innego niż nic lub inna kropka (tj. Wyklucza ./i ../):ln -s /mnt/usr/lib/.!(|.)* /usr/lib
Odpowiedzi:
Myślę, że to należy do superużytkownika.
źródło
GNU
cp
ma opcję tworzenia dowiązań symbolicznych zamiast kopiowania.Zauważ, że jest to rozszerzenie GNU, którego nie znaleziono w POSIX
cp
.źródło
źródło
Opublikowane rozwiązania nie będą łączyły żadnych ukrytych plików. Aby je uwzględnić, spróbuj tego:
Jeśli chcesz rekurencyjnie tworzyć katalogi i tylko pliki z linkami (tak, że jeśli tworzysz plik w katalogu, tak naprawdę
/usr/lib
nie jest/mnt/usr/lib
), możesz to zrobić:źródło
./
i../
):ln -s /mnt/usr/lib/.!(|.)* /usr/lib