Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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! yikes

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