Fondamentalement, je veux faire ce qui suit:
ls -l[+someflags]
(ou par un autre moyen) qui n'affichera que les fichiers qui sont des liens symboliques
de sorte que la sortie aurait l'air
-rw-r--r-- 1 username grp size date-time filename -> somedir
-rw-r--r-- 1 username grp size date-time filename2 -> somsdfsdf
etc.
Par exemple,
pour afficher uniquement les répertoires, j'ai un alias:
alias lsd 'ls -l | grep ^d'
Je me demande comment afficher uniquement les fichiers cachés ou uniquement les répertoires cachés?
J'ai la solution suivante, mais elle n'affiche pas la sortie en couleur :(
ls -ltra | grep '\->'
Retrouvez tous les liens symboliques dans un annuaire:
ls -l `find /usr/bin -maxdepth 1 -type l -print`
Pour la liste des fichiers cachés:
ls -ald .*
ls -l | grep lrw
affiche uniquement les liens symboliques (fichiers et répertoires). Je ne sais pas comment les rendre colorés, cependant.
ls -lad .*
affiche uniquement les fichiers/répertoires cachés
ls -l | grep drw
affiche uniquement les répertoires.
Pour les dossiers "cachés" uniquement - dossiers à points, essayez:
ls -l .**
Oui, les deux astérisques sont nécessaires, sinon vous obtiendrez également. et .. dans les résultats.
Pour les liens symboliques, essayez le programme des liens symboliques:
symlinks -v .
(affiche tous les liens symboliques dans le répertoire actuel)
Pour afficher JUSTE les liens symboliques et les liens vers ceux-ci:
find -P . -type l -exec echo -n "{} -> " \; -exec readlink {} \;
Limiter à JUSTE CE DIR
find -P . -maxdepth 1 -type l -exec echo -n "{} -> " \; -exec readlink {} \;
Exemple de sortie (après ln -s/usr/bin moo):
./moo -> /usr/bin
Vous étiez presque là avec votre solution grep; concentrons-nous sur la récupération de la COULEUR.
Essaye ça:
ls --color = toujours -ltra | grep '->'
Amélioration un peu de la réponse acceptée donnée par @ChristopheD (impossible de commenter la réponse acceptée car je n'ai pas assez de réputation)
J'utilise un alias
findsymlinks <path> <depth>
où l'alias est
alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto"
Essayez l'indicateur de type de fichier et supprimez l'ajout de @
ls -F /home/usr/foo | grep "@" | sed 's/@//'
Pour (t) csh :
ls --color=always -ltra | grep '\->'
(C'est simplement réponse de pbr mais avec le tiret échappé.)
Mac OSX
Sous OSX, ls
fonctionne différemment, alors ajoutez ceci à votre ~/.cshrc
fichier:
setenv CLICOLOR_FORCE 1 # (equivalent of Linux --color=always)
Et puis appelez:
ls -G -ltra | grep '\->' # (-G is equivalent of ls --color)
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
Cela fonctionne bien pour moi, cependant, si vous recherchez/la racine du système de fichiers, vous devrez omettre le répertoire proc
Pour bash:
Cela fournit une sortie agréable.
sl = `find -L/path/to/target -xtype l`; pour les liens dans $ sl; do ls --color = always -ltra $ links; fait | sed 's/^//'
Utilisation: foo $ path
Utilise le chemin actuel si aucun n'est spécifié.
#!/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