#1 Le 10/11/2007, à 23:52
- Shacamus
[ Shell ] Afficher l intégralité des fichiers sans extension
Bonjour tout le monde!
Je tente d afficher en shell les fichiers n ayant pas d extension.. Pour ce faire je suis parti avec des expressions régulières du genre
ls | grep '[^\.]\.'
En effet, ls | grep '[\.].$' affiche l intégralité des fichiers avec extension...
Merci d avance!!
Hors ligne
#2 Le 11/11/2007, à 00:20
- Shacamus
Re : [ Shell ] Afficher l intégralité des fichiers sans extension
Je viens de faire un petit man, je pense que la meilleure chose à utiliser en l'option -v non?
RTFM power !!
Hors ligne
#3 Le 11/11/2007, à 00:34
- itsmokes
Re : [ Shell ] Afficher l intégralité des fichiers sans extension
ls | grep -v '[\.].*$'
par exemple ?
EDIT
1 grillé
2
ls | grep -v '\..*$'
marche aussi
Dernière modification par itsmokes (Le 11/11/2007, à 00:39)
Hors ligne
#4 Le 11/11/2007, à 00:47
- Shacamus
Re : [ Shell ] Afficher l intégralité des fichiers sans extension
Par contre je ne comprends pas bien la différence de syntaxe entre ls et grep...
si l'on tappe ls '\..*$' cela n'affiche pas les termes voulus...
en tout cas merci pour la deuxieme réponse!
Hors ligne
#5 Le 11/11/2007, à 00:54
- Shacamus
Re : [ Shell ] Afficher l intégralité des fichiers sans extension
Les métacaractères du shell [modifier]
Un métacaractère est un caractère qui possède une signification au-delà de sa signification littérale[1]. Quelques exemples au niveau des expressions rationnelles dans Bash :
* "*" : correspond à n'importe quel caractère, répété 0, 1 ou plusieurs fois.
* "?" : est équivalent à un caractère quelconque.
Et d'autres au niveau des commandes Bash :
* "`" : interprète la chaine de caractères incluse entre deux de ces caractères comme une commande. Exemple : for file in `ls` ;
* "\" : empêche l'interprétation spéciale d'un métacaractère ;
* "'" : tous les caractères inclus entre deux de ces caractères sont interprétés comme simple texte.
Je présume qu'il s agit de ça?
Hors ligne
#6 Le 11/11/2007, à 01:04
- itsmokes
Re : [ Shell ] Afficher l intégralité des fichiers sans extension
ça dépend du shell aussi : je tourne en bash
"\" : empêche l'interprétation spéciale d'un métacaractère ;
donc ici \. représente le caractère .
.* n'importe quel caractère 0 ou + puis $ pour fin de chaine par exemple flv,mpg,jpg,html etc ...
grep -v spécifie de ne pas afficher ce type de fichiers
Hors ligne
#7 Le 12/11/2007, à 21:05
- Shacamus
Re : [ Shell ] Afficher l intégralité des fichiers sans extension
et si l'on souhaite effacer ces fichiers?
Je n arrive pas a les passer en arguments à "rm"...
Hors ligne
#8 Le 12/11/2007, à 21:15
- Gojita
Re : [ Shell ] Afficher l intégralité des fichiers sans extension
tu peux peut-être essayer:
ls | grep -v '\..*$' | xargs rm -f
Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.
Hors ligne
#9 Le 12/11/2007, à 21:57
- Alain.g
Re : [ Shell ] Afficher l intégralité des fichiers sans extension
salut
tu peux aussi utiliser find :
find . -type f -regex '.+/[^\.]+'
ou pour ajouter les fichiers cachés :
find . -type f -regex '.+/\.?[^\.]+'
Ensuite, si tu souhaites appliquer une commande sur les résultats de la recherche, il y a l'option -exec
Pour supprimer, il faudrait y ajouter -exec rm {} \;
find . -type f -regex '.+/\.?[^\.]+' -exec rm {} \;
Attention quand même avant d'exécuter cette commande.
à‡a sera récursif, donc cela supprimera les fichiers dans tous les sous-dossiers. Pour limiter, on peut utiliser l'option -maxdepth
Donc mieux vaut être sûr d'être dans le bon répertoire et vérifier d'abord sans le -exec pour voir les fichiers qui seront concernés
Dernière modification par Alain.g (Le 12/11/2007, à 22:08)
Xubuntu Karmic !
Hors ligne