Cu comanda:
ls -la * Pot lista toate linkurile mele simbolice.
Cum pot elimina toate linkurile simbolice care sunt legate de un folder special?
De exemplu:
 În directorul meu usr/local/bin Am următoarele intrări: 
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  Acum vreau să elimin toate legăturile cu calea /usr/local/texlive/ 
Comentarii
- Adică eliminați toate linkurile simbolice legate de un folder țintă? Sau mutați toate linkurile simbolice găsite într-un anumit folder?
- @uther: mă refer la eliminarea linkurilor.
Răspuns
Vă rugăm să vă asigurați că citiți răspunsul alternativ . Este chiar mai precis, deși nu a fost votat la fel de mare în acest moment.
Puteți utiliza acest lucru pentru a șterge toate linkurile simbolice:
find -type l -delete  cu versiuni moderne find. 
În versiunile mai vechi de identificare, trebuie să fie:
find -type l -exec rm {} \; # or find -type l -exec unlink {} \; Pentru a limita la un anumit link țintă, presupunând că niciuna dintre căi nu conține niciun caracter de linie nouă:
 find -type l | while IFS= read -r lnkname; do if [ "$(readlink "$lnkname")" == "/your/exact/path" ]; then rm -- "$lnkname"; fi; done sau frumos formatat
 find -type l | while IFS= read -r lnkname; do if [ "$(readlink "$lnkname")" = "/your/exact/path" ]; then rm -- "$lnkname" fi done  if poate include, desigur, și o condiție mai complexă, cum ar fi potrivirea unui model cu grep. 
Adaptat cazului dvs.:
find -type l | while IFS= read -r lnk; do if (readlink "$lnk" | grep -q "^/usr/local/texlive/"); then rm "$lnk"; fi; done sau frumos formatat:
find -type l | while IFS= read -r lnk do if readlink "$lnk" | grep -q "^/usr/local/texlive/" then rm "$lnk" fi done Comentarii
- Această comandă elimină toate linkurile simbolice? Vă rugăm să consultați ediția mea de mai sus ..
- @ Marco: da, primele trei rânduri ar fi. Editarea mai mult 🙂
-  Aș adăuga și un -printla sfârșitul
comandă pentru a obține feedback vizual.
Răspuns
 Cu un find modern care acceptă -lname: 
find /usr/local/bin -lname "/usr/local/texlive/*" -delete ar trebui să facă it.
Comentarii
- Aceasta este o soluție excelentă și simplă. Am testat și funcționează ca un farmec. Mulțumim
-  Probabil că ar trebui să fie find /usr/local/bin
-  Nici măcar modern, neapărat. GNU findare-lnamede mai mult timp decât l-am întreținut (din jurul anului 2003).
-  @JamesYoungman: Mulțumiri! Prin findmodern am vrut să spun GNUfind. 😉 Am folositusr/local/bin, deoarece ' este ceea ce a folosit OP.
Răspuns
 Soluția find este excelentă. 
 Doar în cazul în care găsirea dvs. nu „t suport -lname, aici este un alt mod care folosește numai shell și readlink. 
cd /usr/local/bin for f in *; do case "$(readlink "$f")" in /usr/local/texlive/*) rm "$f" ;; esac done Răspuns
 Cu zsh: 
rm -f /usr/local/bin(@e"{[[ $REPLY:P = /usr/local/texlive/* ]]}")  $REPLY:P rezolvă complet calea către una fără linkuri simbolice, deci presupunând că /usr/local/texlive este link-ul simbolic în sine , ar elimina toate fișierele care, după rezoluția link-ului simbolic, se află sub /usr/local/textlive, care ar include linkuri către /usr/local/texlive/foo, dar și către ../texlive/bar sau către /usr/./local/texlive/whatever sau către /some/other/symlink care este el însuși un link simbolic care indică în /usr/local/texlive, etc. 
Răspuns
Mergeți la calea dvs. și setați-vă configurația căii
ls -alh|grep "your-pattern-to-file-or-folder-for-symlink"| awk "{print $9}"|xargs rm -rf Comentarii
-  Deoarece acestea sunt căi precum usr/local/binpe care le cautăgrep,grep -Eeste calea de urmat. În caz contrar, nu ar exista rezultate potrivite. De asemenea,hdinlsnu servește la niciun scop aici!-h, --human-readable : with -l, print sizes in human readable format (e.g., 1K 234M 2G). Pentru mai multe consultațiman lssauman grep
Răspuns
 sudo unlink /path/of/your/package 
thats it
Comentarii
- Cum elimină acest lucru toate legăturile simbolice care indică țintele aflate sub calea dată? Rețineți că întrebarea se întreabă despre eliminarea legăturilor simbolice dintr-un anumit director care indică țintele dintr-un alt director.