Cette question concerne la recherche de répertoires dans un répertoire courant. La solution est essentiellement:
ls -d */
C'est très bien, mais comment puis-je facilement lister les liens symboliques? Dois-je utiliser quelque chose comme
find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)
Ou existe-t-il un moyen plus simple? Peut-on utiliser ls pour cela?
man find
spectacles qui-d
est synonyme de-depth
(pour compatibilité avec FreeBSD, NetBSD, MacOS X et OpenBSD.), Ie. ce n'est pas la même chose que-maxdepth
. . .-depth
Traitez le contenu de chaque répertoire avant le répertoire luiRéponses:
En zsh (ajoutez
N
à l'intérieur des parenthèses pour inclure les liens symboliques dont le nom commence par a.
):Avec la plupart des
find
implémentations:Conforme à POSIX:
Ou avec une boucle shell:
la source
-prune
option, vous devez utiliserfind topdir ! -name topdir -prune
; sinon, le répertoire de départ est également ignoré.Ce n'est pas sur un Mac, mais
travaille pour moi.
la source
Vous devez utiliser
-type
et non-xtype
:La valeur par défaut est
-P
, donc l'option -xtype essaiera de déterminer le fichier résultant, pas le lien symbolique lui-même. En fait, j'obtiens des résultats positifs, ce qui semble être un bug. Le-P -xtype l
devrait retourner vrai (sur un lien symbolique) si la résultante est elle-même un lien symbolique.Peut également utiliser:
ls -FA | sed -ne 's/@//p'
qui affichera uniquement les liens symboliques.la source
sed -ne 's/@//p'
(et mêmesed -ne 's/@$//p'
) n'est pas un test sécurisé, car la première version donnera un faux positif lorsqu'il@
se produit n'importe où dans la sortie ls , et la seconde renverra un faux positif lorsqu'un nom de fichier se termine réellement@
Pour découvrir uniquement les fichiers qui sont des liens symboliques dans le répertoire courant:
Cela listera récursivement tous les fichiers de liens symboliques. En outre, il affiche les fichiers réels vers lesquels il pointe.
la source