Bonjour,
Je cherche à supprimer dans un dossier tous les éléments qui n'ont pas une certaine extension.
Par exemple, peut-on désigner "tous les fichiers qui ne sont PAS dans *.tar" ?
Merci
Bonjour,
Je cherche à supprimer dans un dossier tous les éléments qui n'ont pas une certaine extension.
Par exemple, peut-on désigner "tous les fichiers qui ne sont PAS dans *.tar" ?
Merci
Salut,
Avec find et la négation (!) sur la recherche de son nom sous forme de regex (*.tar) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 $ ls -1 foo.sh* tata.tar tete.tar titi.tar toto.doc toto.gif toto.jpg toto.png toto.sh toto.tar toto.txt toto.xls tutu.tar $ find . -type f ! -name "*.tar" -exec echo "rm -f {}" \; rm -f ./toto.sh rm -f ./toto.gif rm -f ./toto.png rm -f ./toto.xls rm -f ./toto.doc rm -f ./toto.jpg rm -f ./toto.txt rm -f ./foo.sh $![]()
Cette syntaxe est peu connue, mais c'est standard et c'est bien pratique. De même que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part rm !(*.tar)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ?(pattern-list) *(pattern-list) +(pattern-list) @(pattern-list)
Bonjour matafan,
La syntaxe que tu propose ne marche pas chez moi :
De même que les autres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 rm !(*.tar)
Je suis sous la distribution Red Hat de Linux , shell bash.
---------------------------------------------------------
Petite correction :
si je passe en ksh, la syntaxe est acceptée. Mais je n'aime pas ce shell. Y a-t-il un moyen de faire passer la syntaxe en bash ?
Quelle erreur as-tu ? Ca devrait marcher avec bash. D'ailleurs chez moi ça marche avec bash :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 0)tmp $ ls tata tata.tar toto toto.tar 0)tmp $ echo !(*.tar) tata toto
Bonjour,
Voici le retour de la commande :
Je ne suis vraiment pas un expert en shell, donc je ne sais pas trop ce que ça veut dire. L'option "extglob" est-elle activée ? Si oui, pourquoi la syntaxe ne marche toujours pas, si non, comment faire pour l'activer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 > shopt -p | grep extglog shopt -u extglob
Merci
Partager