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
--ignore
vous pouvez l'étendre aux motifsls --ignore="file?"
ls --ignore="file*"
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 *.csv
travaux.Mais
ls -I *.csv -I *.txt
ne 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.
la source
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 restesls --ignore={"*.jpg","*.png","*.svg"}
la source
--ignore
options. Vous auriez aussi utilisé--ignore="*."{jpg,png,svg}
Je pense que cela produit le résultat que vous recherchez:
Apparemment , il faut
shopt -s extglob
que 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:
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.
la source