-l use a long listing format -d, --directory list directory entries instead of contents, and do not derefer‐ ence symbolic links.?* will only state hidden files
Si vous voulez juste les fichiers dans votre répertoire actuel (pas de récursion), vous pouvez le faire
echo .[^.]*
Cela affichera les noms de tous les fichiers dont le nom commence par un . et est suivi d'un ou plusieurs caractères non-points. Notez que cela échouera pour les fichiers dont le nom commence par des points consécutifs, par exemple ....foo ne sera pas affiché.
Vous pouvez également utiliser find:
find -mindepth 1 -prune -name '.*'
Le -mindepth s'assure que nous ne correspondons pas . et le -prune cela signifie que find ne descendra pas dans les sous-répertoires.
find . -type f> -- Liste tous les fichiers dans le répertoire courant avec son chemin comme,
./foo.html./bar.html./.foo1
awk -F"/" '$NF ~ /^\..*$/ {print $NF}'
/ en tant que séparateur de champ, awk vérifie si le dernier champ est regardé avec un point ou non. S'il commence par un point, il imprime le dernier champ de cette ligne correspondante.
-maxdepth 1 limite la recherche au répertoire courant
-name '.*' rechercher les noms de fichiers commençant par un point
-o ou
-name '*~' recherchez les noms de fichiers qui se terminent par un tilde (généralement, ce sont des fichiers de sauvegarde provenant de programmes d'édition de texte)
Cependant, cette réponse et toutes les autres manquent les fichiers qui se trouvent dans le répertoire actuel. .hidden fichier. Si vous écrivez un script, alors ces lignes liront le .hidden fichier et afficher les noms de fichiers de ceux qui existent.
if [[ -f .hidden]] # if '.hidden' exists and is a filethen while read filename # read file name from line do if [[ -e "$filename" ]] # if the read file name exists then echo "$filename" # print it fi done < .hidden # read from .hidden filefi
Je pense que vous pouvez le faire avec la commande suivante.
ls -a | grep "^\." | grep -v "^\.$" | grep -v "^\..$"
ls -a commande que vous avez entrée, qui affiche tous les fichiers et répertoires du répertoire de travail actuel.
grep "^\." la commande que j'ai ajoutée, qui filtre la sortie pour afficher uniquement les fichiers cachés(son nom commence par ".").
grep -v "^\.$" | grep -v "^\..$" commande que j'ai ajoutée, qui filtre la sortie à exclure ., ..(Ce sont le répertoire actuel et le répertoire parent).
Si certains noms de fichiers peuvent avoir plus d'une ligne avec "\n", l'exemple ci-dessus pourrait être incorrect.
Je suggère donc de suivre la commande pour résoudre le problème.
Qu'est-ce que tu aurais pu faire d'autre, is ls .?* Ou ls .!(|) cela vous montrera tout dans le répertoire actuel des fichiers/répertoires cachés en haut et d'autres fichiers / répertoires en dessous
Remarquez maintenant dans les résultats ci-dessus, il vous montre chaque fichier/répertoire avec son sous-répertoire et tous les fichiers cachés juste en dessous.
[1:0:248][ebaron@37signals:pts/4][~/Desktop]$ ls .!(|).bash_aliases .bashrc1 .bashrc1~..:askapache-bash-profile.txt examples.desktop Public top-1m.csvbackups Firefox_wallpaper.png PycharmProjects top-1m.csv.zipDesktop java_error_in_PYCHARM_17581.log Shotwell Import Log.txt topsites.txtDocuments Music Templates VideosDownloads Pictures texput.log vmware
Désolé, je ne peux pas commenter. pour expliquer la différence ici entre ls .?* et réponse @cioby23 ls -d .[!.]* .??* Et pourquoi il imprime réellement des fichiers cachés deux fois, c'est parce que vous demandez littéralement deux fois .??*, .?*, .[!.]* c'est la même chose, donc l'ajout de l'un d'eux avec des caractères de commande différents s'imprimera deux fois.