2 votes

Recherche de noms de fichiers sans un caractère spécifié

Y a-t-il un bon regex pour trouver tous les fichiers que ne pas contiennent un certain caractère ? Je sais qu'il existe de nombreux moyens de trouver les lignes contenant des correspondances, mais je veux quelque chose qui permette de trouver tous les fichiers que ne pas contenir ma correspondance.

2voto

Sebastian Points 5540

Utilisation de ls y sed pour remplacer tous les noms de fichiers sans extension (c'est-à-dire ne contenant pas de symbole . ) avec NoExtension :

ls | sed -e 's/^[^.]*$/NoExtension/g'

remplacer les noms de fichiers qui ont une extension par leur extension :

ls | sed -e 's/^[^.]*$/NoExtension/g' -e 's/.*\.\(.*\)/\1/'

1voto

suspectus Points 5877

Pour bash - pour lister tous les fichiers dans un répertoire - :

shopt -s extglob
ls !(*.*)

Le paramètre extglob est nécessaire pour permettre à ! ce qui annule l'utilisation de l'option . argument à ls.

1voto

iiSeymour Points 34967

Vous devriez écarter toutes les réponses qui analysent la sortie de ls lire aquí pourquoi. L'outil find est parfait pour cela.

# Show files in cwd
$ ls
file  file.txt

# Find the files with an extension 
$ find -type f  -regex '.*/.*\..*$'
./file.txt

# Invert the match using the -not option
$ find -type f  -not -regex '.*/.*\..*$'
./file

0voto

tink Points 1856

Et une solution awk, pour faire bonne mesure.

ls | awk '$0 !~ /\..+$/{a++}END{print a}'

0voto

potong Points 18653

Cela pourrait fonctionner pour vous (find, GNU sed & wc) :

find . -type f | sed -rn '\|.*/\.?[^.]+$|w NoExtensions' && wc -l NoExtensions

Cela vous donne un compte et une liste.

N.B. dot les fichiers sans extension sont inclus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X