Concernant la documentation ls(1) (man ls
):
-A, --almost-all ne répertorie pas les implicites . et ..
vous avez besoin (sans tout argument supplémentaire tel que .*
):
ls -A
ou mieux encore :
/bin/ls -A
J'ai une situation où je veux supprimer une série de répertoires de points. Dans mes serveurs, nous marquons les répertoires pour suppression en ajoutant un point et certains autres modèles de texte (horodatage) pour une suppression automatique. Parfois, je dois le faire manuellement.
Comme je l'ai commenté à la réponse de Basile Starynkevitch, lorsque vous utilisez un modèle global comme celui ci-dessous, le commutateur -A perd sa fonction et fonctionne comme -a :
[email protected]:~/scripts$ ls -1dA .*
.
..
.comparepp.sh.swp
Cela donnerait très certainement une erreur si j'essayais de supprimer des fichiers en tant qu'utilisateur, mais je ne veux tout simplement pas penser à ce qui pourrait arriver en tant que root (!)
Mon approche dans ce cas est :
for dir in $(ls -1ad .* | tail -n +3) ; do rm -rfv $dir ; done
Je termine les 2 premières lignes contenant les points comme vous pouvez le voir. Pour adapter la réponse à la question posée, cela ferait l'affaire :
ls -d1A .* | tail -n +3
$ ls -lA
correspond le mieux à mes besoins.
Pour plus de commodité, je recommande de définir un alias dans le fichier .bashrc comme suit :
alias ll='ls -lA'