Angezeigt werden nur Dateien und Ordner, symbolische links, die in tcsh oder bash
Frage
Grundsätzlich möchte ich Folgendes tun:
ls -l[+someflags]
(oder mit anderen Mitteln), dass nur Dateien angezeigt werden, die symbolische links
so die Ausgabe Aussehen würde
-rw-r--r-- 1 username grp size date-time filename -> somedir
-rw-r--r-- 1 username grp size date-time filename2 -> somsdfsdf
etc.
Für Beispiel,
zeigt nur die Verzeichnisse habe ich einen alias:
alias lsd 'ls -l | grep ^d'
Ich Frage mich, wie der Anzeige von nur versteckte Dateien oder nur die versteckten Verzeichnisse?
Ich habe die folgende Lösung, aber es nicht display die Ausgabe in der Farbe :(
ls -ltra | grep '\->'
Lösung
Finden Sie alle symbolischen Links in einem Verzeichnis:
ls -l `find /usr/bin -maxdepth 1 -type l -print`
Für die Kotierung von versteckten Dateien:
ls -ald .*
Andere Tipps
ls -l | grep lrw
zeigt nur Symlinks (Dateien und Verzeichnisse). Nicht sicher, wie sie bunt zu bekommen, though.
ls -lad .*
zeigt nur versteckte Dateien / Verzeichnisse
ls -l | grep drw
zeigt nur Verzeichnisse.
Für nur "versteckt" Ordner - Punkt Ordner versuchen:
ls -l .**
Ja, die zwei Sternchen sind notwendig, sonst werden Sie auch bekommen. und .. in den Ergebnissen.
Für Symlinks, na ja, versuchen, das Symlinks Programm:
symlinks -v .
(zeigt alle Symlinks im aktuellen Verzeichnis)
So zeigen Sie einfach die Symlinks und was sie verlinken auf:
find -P . -type l -exec echo -n "{} -> " \; -exec readlink {} \;
Zur Begrenzung nur diese DIR
find -P . -maxdepth 1 -type l -exec echo -n "{} -> " \; -exec readlink {} \;
Beispiel Ausgang (nach ln -s / usr / bin MOO):
./moo -> /usr/bin
Sie waren fast da mit grep-Lösung; konzentrieren wir uns auf immer Sie COLOR wieder.
Versuchen Sie folgendes:
ls --color=always -ltra | grep '->'
Die Verbesserung ein wenig auf die akzeptierte Antwort von @ChristopheD (coudnt Kommentar zu der akzeptierten Antwort, da ich nicht genug Ruf)
Ich verwenden Sie einen alias
findsymlinks <path> <depth>
wo der alias ist
alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto"
Versuchen Typ Flagdatei und loszuwerden der Anfügen @
ls -F /home/usr/foo | grep "@" | sed 's/@//'
Für (t) csh :
ls --color=always -ltra | grep '\->'
(Dies ist einfach pbr Antwort aber mit dem Bindestrich entkommen.)
Mac OSX
Auf OSX, ls
funktioniert anders, so fügen Sie diese zu Ihrer ~/.cshrc
-Datei:
setenv CLICOLOR_FORCE 1 # (equivalent of Linux --color=always)
Und dann rufen Sie:
ls -G -ltra | grep '\->' # (-G is equivalent of ls --color)
Für bash:
Dies bietet eine schöne Ausgabe.
sl=`find -L /path/to/target -xtype l`; for links in $sl; do ls --color=always -ltra $links; done | sed 's/^/ /'
echo > linklist.found && $(for i in `find /path/to/dir/ -type l`; do echo `ls -d --color=always $i` `echo " -> "` $(ls -d --color=always `readlink -f $i`) >> linklist.found; echo >> linklist.found; done;) && cat linklist.found | more
Das funktioniert gut für mich aber, wenn Sie / Dateisystem root Benutzer werden wird, müssen Sie die proc-Verzeichnis wegzulassen
Verbrauch: foo $ path
Verwendet Strompfad, wenn keine angegeben.
#!/bin/bash
case "$1" in
-r)
find $2 -type l -print | while IFS= read line ; do ls -l --color=always "$line"; done
;;
--help)
echo 'Usage: foo [-r] [$PATH]'
echo
echo '-r Recursive'
;;
*)
ls --color=always -ltra $1 | grep '\->'
esac