exclure certains fichiers dans ls

61

Je voudrais courir ls et exclure certains fichiers dans la sortie.

Lorsque j'exécute la commande suivante, tous les fichiers sont placés sur une seule ligne:

$ ls -1
file1
file2
file3
temp

Je voudrais exécuter cette commande d'une manière afin qu'il montre

$ ls -1 <insert magic here> temp
file1
file2
file3
Alice Ryhl
la source

Réponses:

82
ls -I <filename>

-I = Ignorer le nom du fichier, c'est-à-dire ne pas répertorier le fichier spécifié.

Pour ignorer plusieurs fichiers, ajoutez -I avant chaque nom de fichier.

ls -I file1 -I file2

Pour ignorer les fichiers par leurs extensions de nom, procédez comme suit, par exemple.

ls -I "*.jpg" -I "*.svg"
Sudheer
la source
4
Si vous utilisez l'option longue forme, --ignorevous pouvez l'étendre aux motifs ls --ignore="file?"ls --ignore="file*"
globaux,
3
vous pouvez aussi utiliser les motifs globaux avec la forme abrégée en les citant
verboze
18

Pour moi, si j'utilise -I une fois, cela fonctionne, mais si j'utilise deux fois, ce n'est pas le cas. par exemple: ls -I *.csvtravaux.

Mais ls -I *.csv -I *.txtne fonctionne pas et retourne des fichiers txt à la place.

--ignore a fait le tour pour moi. C'est ce dont j'avais besoin et travaillé.

ls -lhrt --ignore="*.gz" --ignore="*.1"

Cela me listera les fichiers du dossier de journal où il exclut les anciens journaux de sauvegarde.

Damodar Bashyal
la source
3
citant .csv * dans les premiers travaux de forme, par exemple., ls -I '*.txt'. La raison pour laquelle cela ne fonctionne pas sans citation est dû à l'expansion du shell, c'est-à-dire que vous lui indiquez de lister tous les fichiers csv au lieu de les exclure. Ce qui se passe réellement, c’est qu’il ignore les premiers fichiers .csv et .1 après l’extension, mais répertorie les restes
verboze
La double cotation a également fonctionné pour moi. Merci @verboze
user38537
c'est plus facile. Merci.
Philippe Delteil
6

ls --ignore={"*.jpg","*.png","*.svg"}

Kartikey Tanna
la source
4
Il s’agit simplement d’utiliser l’expansion de bash pour obtenir trois --ignoreoptions. Vous auriez aussi utilisé--ignore="*."{jpg,png,svg}
Muru
1

Je pense que cela produit le résultat que vous recherchez:

ls -1 !(temp)

Apparemment , il faut shopt -s extglobque cela fonctionne
(je l’ai activé, alors j’ai déjà trouvé cela utile et l’ai activé).

Je suppose que vous pouvez également utiliser grep pour filtrer la sortie:

ls -1 | grep -v '^temp$'

L'utilisation d'un canal et de filtres offre beaucoup plus de flexibilité et des compétences transférables à d'autres commandes / situations, même si cela ne vous intéresse peut-être pas dans ce cas particulier.

Max Waterman
la source