227 votes

Comment afficher uniquement les fichiers cachés dans le Terminal ?

J'ai un répertoire qui contient des milliers de fichiers, dont certains sont cachés.

La commande ls -a lister tous les fichiers, y compris les fichiers cachés, mais je n'ai besoin que de lister les fichiers cachés.

Quelle commande dois-je utiliser ?

0voto

Ferdi Points 101

Vous pouvez également utiliser la substitution de processus

 diff <(ls -1A) <(ls -1)

Explication :

Faire passer la sortie d'une commande dans l'entrée d'une autre est une technique puissante. Mais que se passe-t-il si vous avez besoin de transférer la sortie de plusieurs commandes ? C'est là que la substitution de processus entre en jeu. La substitution de processus fait passer la sortie d'un ou plusieurs processus dans l'entrée d'un autre processus.

Cité d'ici

Donc vous envoyez deux sorties dans la commande diff.

La première commande est "ls -1A". Le drapeau "-A" fonctionne comme le drapeau "-a", mais il ne vous montre pas "." et " ". Il vous montre donc tous les fichiers et répertoires (cachés et non cachés) d'un répertoire. Le drapeau "-1" affiche les résultats de "ls" l'un en dessous de l'autre verticalement et non dans une liste horizontale.

0voto

Rich Liao Points 1

Je n'aime pas -d parce qu'il ne montre que no matches found s'il n'y a pas de correspondance.

Il ne montre pas non plus total [size] en haut des lignes.

Je pense ls -lA --ignore "[^\.]*" est une meilleure solution.

0voto

Sebastian Nielsen Points 543

ls -A | grep "^\."

  • ls -A liste tous les fichiers (cachés et non cachés)
  • grep "^\." filtrer ceux qui commencent par un point

0voto

Jeff_V Points 111

Merci pour tous ces conseils !

Voici une fonction pour votre fichier .bash_aliases qui ne gère aucun argument de commande, ne lance pas d'erreur sur les répertoires sans fichiers cachés, ajoute / aux répertoires listés et produit des résultats sur une seule colonne.

lsa () {

    # Exit codes with/without argument are 0 if no hidden files present
    EXIT=$(ls -1d .!(|.) |& grep -q "No such file"; echo $?)
    EXIT_ARG=$(cd $1; ls -1d .!(|.) |& grep -q "No such file"; echo $?)

    # If no argument
    if [ $# -eq 0 ]; then
        if [ $EXIT -eq 0 ]; then
            printf ""
        else
            ls -1dp .!(|.)
        fi

    # If argument
    else
        if [ $EXIT_ARG -eq 0 ]; then
            printf ""
        else
            (cd $1; ls -1dp .!(|.))
        fi
    fi
}

-1voto

Tejas Lotlikar Points 2489

Vous pouvez utiliser la commande

ls -pa | grep -v /

Explication des drapeaux :

  • -p ajoutera l'indicateur "/" aux répertoires
  • -a listera les fichiers cachés
  • grep -v / retourneront les lignes qui ne contiennent pas de barre oblique.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X