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 ?

1voto

Maythux Points 77506

Vous pouvez utiliser la commande

ls -Ad .??*

Cette méthode a l'avantage de permettre l'établissement de listes en plusieurs colonnes, contrairement à l'approche basée sur la méthode grep dans le module de gestion de l'information. ls -a | grep "^\." solutions

1voto

alejandro Points 111

Toutes les réponses apportées jusqu'à présent sont basées sur le fait que les fichiers (ou répertoires) dont le nom commence par un point sont "cachés". J'ai trouvé une autre solution, qui n'est peut-être pas aussi efficace, mais cette solution ne suppose rien sur les noms des fichiers cachés, et évite donc d'énumérer .. dans le résultat (comme le fait la réponse actuellement acceptée).

La commande complète est :

ls -d $(echo -e "$(\ls)\n$(\ls -A)" | sort | uniq -u)

Explication

Cela permet de lister deux fois tous les fichiers (et répertoires),

echo -e "$(\ls)\n$(\ls -A)"

mais ne montre les fichiers cachés qu'une seule fois -A .

Ensuite, la liste est triée | sort qui fait apparaître les fichiers normaux (non cachés) deux fois et les uns à côté des autres.

Ensuite, supprimez toutes les lignes qui apparaissent plus d'une fois. | uniq -u en ne laissant que des lignes uniques.

Enfin, utilisez ls à nouveau pour lister tous les fichiers avec les options personnalisées de l'utilisateur et sans lister le contenu des répertoires dans la liste. -d .

EDIT (Limitations) :

Comme muru l'a souligné, cette solution ne fonctionnera pas correctement s'il y a des fichiers avec des noms tels que escaped\ncharacter.txt parce que echo -e divisera le nom du fichier en deux lignes. Il ne fonctionnera pas non plus comme prévu s'il y a deux fichiers cachés avec presque le même nom, à l'exception d'un caractère spécial, tel que .foo[tab].txt y .foo[new-line].txt car les deux sont imprimés comme .foo?.txt et serait éliminé par uniq -u

1voto

muru Points 180007

Avec bash, la définition de l'option GLOBIGNORE variable spéciale est une valeur non vide est suffisante pour qu'il ignore . y .. lors de l'expansion de globs. À partir de les documents sur Bash :

Le site GLOBIGNORE La variable Shell peut être utilisée pour restreindre l'ensemble des éléments suivants noms de fichiers correspondant à un motif. Si GLOBIGNORE est fixé, chaque correspondance qui correspond également à l'un des motifs de l'option GLOBIGNORE est retiré de la liste des correspondances. Si le nocaseglob est définie, la correspondance avec les motifs dans GLOBIGNORE est effectuée sans sans tenir compte de la casse. Les noms de fichiers . y .. sont toujours ignorés lorsque GLOBIGNORE est défini et non nul. Toutefois, le fait de définir GLOBIGNORE à un une valeur non nulle a pour effet d'activer l'option dotglob Shell, de sorte que tous les autres noms de fichiers commençant par un ‘. correspondra.

Si nous le réglons sur .:.. les deux . y .. sera ignorée. Puisque tout ce qui n'est pas nul donnera également ce comportement, nous pourrions tout aussi bien le définir comme suit .

Donc :

GLOBIGNORE=.
ls -d .*

1voto

Sabrina Points 1583

Alternativement, vous pouvez aussi utiliser echo .*

par exemple

user@linux:~$ echo .*
. .. .bash_aliases .bash_history .bash_logout .bashrc
user@linux:~$

Si vous le préférez au format d'une longue liste, il suffit de convertir l'espace blanc en une nouvelle ligne.

user@linux:~$ echo .* | tr ' ' '\n'
.
..
.bash_aliases
.bash_history
.bash_logout
.bashrc
user@linux:~$

0voto

uberhacker Points 39

Pour répertorier tous les fichiers et dossiers cachés :

ls -ld .*

Pour lister uniquement les fichiers cachés :

ls -ld .*|grep -v ^d

Pour répertorier uniquement les dossiers cachés :

ls -ld .*|grep ^d

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