Za pomocą polecenia:
ls -la *
Mogę wymienić wszystkie moje dowiązania symboliczne.
Jak mogę usunąć wszystkie dowiązania symboliczne, które są połączone ze specjalnym folderem?
Na przykład:
W moim katalogu usr/local/bin
mam następujące wpisy:
lrwxrwxrwx 1 root root 50 Apr 22 14:52 allneeded -> /usr/local/texlive/2011/bin/x86_64-linux/allneeded
lrwxrwxrwx 1 root root 47 Apr 22 14:52 amstex -> /usr/local/texlive/2011/bin/x86_64-linux/amstex
lrwxrwxrwx 1 root root 24 Apr 23 19:09 arara -> /home/marco/.arara/arara
Teraz chcę usunąć wszystkie linki ze ścieżką /usr/local/texlive/
Odpowiedzi:
Proszę przeczytać alternatywną odpowiedź . Jest to jeszcze bardziej istotne, chociaż w tym momencie nie głosowano tak wysoko.
Możesz użyć tego do usunięcia wszystkich dowiązań symbolicznych:
z nowoczesnymi
find
wersjami.W starszych wersjach find może to być:
Aby ograniczyć się do określonego celu linku, zakładając, że żadna ścieżka nie zawiera znaku nowej linii:
lub ładnie sformatowane
if
Może oczywiście zawierać również bardziej złożone warunki takie jak dopasowanie wzorca zgrep
.Dostosowane do twojego przypadku:
lub ładnie sformatowany:
źródło
-print
na końcufind
polecenia, aby uzyskać wizualną informację zwrotną.Dzięki nowoczesnemu,
find
który obsługuje-lname
:powinien to zrobić.
źródło
find /usr/local/bin
find
ma go-lname
dłużej niż ja go utrzymywałem (od około 2003 roku).find
naprawdę miałem na myśli GNUfind
. ;) Użyłemusr/local/bin
, ponieważ tego właśnie użył OP.find
Rozwiązanie jest wielki.Na wypadek, gdyby twoje wyszukiwanie nie wspierało
-lname
, oto inny sposób, w którym używa się tylko powłoki ireadlink
.źródło
Z
zsh
:$REPLY:P
w pełni rozwiązuje ścieżkę do wolnej od dowiązań symbolicznych, więc zakładając/usr/local/texlive
, że sama nie jest dowiązań symbolicznych, usunie wszystkie pliki, które po rozstrzygnięciu dowiązań symbolicznych żyją, pod/usr/local/textlive
którymi będą zawierać linki do,/usr/local/texlive/foo
ale także do../texlive/bar
lub do/usr/./local/texlive/whatever
lub do/some/other/symlink
których sam jest dowiązaniem symbolicznym/usr/local/texlive
itp. .źródło
Przejdź do ścieżki i ustaw konfigurację ścieżki
źródło
usr/local/bin
którychgrep
szuka,grep -E
jest to droga. W przeciwnym razie nie byłoby pasujących wyników. Równieżh
wls
nie służy żadnemu celowi tutaj!-h, --human-readable : with -l, print sizes in human readable format (e.g., 1K 234M 2G)
. Aby uzyskać więcej informacji,man ls
lubman grep