#1 Le 28/08/2013, à 15:19
- snipe2004
Supprimer tous les fichiers sauf...
Bonjour à tous,
Je cherche désespérement un script/une commande qui me permettrait d'effacer :
dans un répertoire et ses sous-répertoires
tous les fichiers qui ne sont pas des .jpg ou .jpeg
mais quand même les fichiers .jpg ou .jpeg commençant par "tn_".
Je me bats avec "find", mais je n'arrive pas à le faire :'(
Merci pour votre aide!
Ps : j'ai pensé qu'il faudrait peut-être au préalable renommer les jpeg en jpg pour se faciliter la vie. Cela me donne une idée... Mais non, Pyrenamer ne peut pas agir de manière récursive dans les sous-répertoires
Dernière modification par snipe2004 (Le 28/08/2013, à 15:41)
ACER NITRO V 515-54-75T7
i7-9750H @ 2,6 GHz x 12 + GTX 1660 Ti/PCIe/SSE2 6 Go (GDDR6)
NVMe 1 Tb, IPS 144 Hz
Hors ligne
#2 Le 28/08/2013, à 15:39
- pingouinux
Re : Supprimer tous les fichiers sauf...
Bonjour,
Es-tu sûr que ce n'est pas plutôt ceci que tu veux faire ?
Je cherche désespérement un script/une commande qui me permettrait d'effacer :
dans un répertoire et ses sous-répertoires
tous les fichiers qui ne sont pas des .jpg ou .jpeg
ET les fichiers .jpg ou .jpeg commençant par "tn_"
Hors ligne
#3 Le 28/08/2013, à 15:41
- snipe2004
Re : Supprimer tous les fichiers sauf...
Ouuuups, bien sûr!
Heureusement que tu étais attentif.
Je corrige mon post initial.
ACER NITRO V 515-54-75T7
i7-9750H @ 2,6 GHz x 12 + GTX 1660 Ti/PCIe/SSE2 6 Go (GDDR6)
NVMe 1 Tb, IPS 144 Hz
Hors ligne
#4 Le 28/08/2013, à 15:57
- pingouinux
Re : Supprimer tous les fichiers sauf...
Je ferais comme ceci, en deux étapes :
find répertoire_de_départ -type f \( ! -iname \*.jpg ! -iname \*.jpeg \) -print
find répertoire_de_départ -type f \( -name tn_\*.jpg -o -name tn_\*.jpeg -o -name tn_\*.JPG -o -name tn_\*.JPEG \) -print
Si la liste est correcte, tu remplaces le -print final par -delete dans les deux commandes.
Ajouté : On peut aussi tout faire d'un coup
find répertoire_de_départ -type f \( \( ! -iname \*.jpg ! -iname \*.jpeg \) -o \( -name tn_\*.jpg -o -name tn_\*.jpeg -o -name tn_\*.JPG -o -name tn_\*.JPEG \) \) -print
Dernière modification par pingouinux (Le 28/08/2013, à 16:13)
Hors ligne
#5 Le 28/08/2013, à 18:31
- Watael
Re : Supprimer tous les fichiers sauf...
salut,
shopt -s dotglob extglob nullglob
printf '%s\n' ./!(*.jp?(e)g) ./**/!(*.jp?(e)g) ./tn_*.jp?(e)g ./**/tn_*.jp?(e)g
si ça affiche bien les fichiers qui doivent être supprimés, remplace le printf par rm.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 28/08/2013, à 20:08
- DJiK
Re : Supprimer tous les fichiers sauf...
shopt -s dotglob extglob nullglob
Mais Watael triche, il utilise des commandes que personne n'a jamais vu!
Hors ligne
#7 Le 28/08/2013, à 20:13
- Watael
Re : Supprimer tous les fichiers sauf...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 29/08/2013, à 09:28
- snipe2004
Re : Supprimer tous les fichiers sauf...
find répertoire_de_départ -type f \( \( ! -iname \*.jpg ! -iname \*.jpeg \) -o \( -name tn_\*.jpg -o -name tn_\*.jpeg -o -name tn_\*.JPG -o -name tn_\*.JPEG \) \) -print
--> ça a marché du feu de dieu ! Merci Y avait tellement de fichiers que les "tn" n'étaient pas affichés dans le print, mais en pratique ils ont bien disparus, alleluia!
Un grand merci!
shopt -s dotglob extglob nullglob
Watael, je dois bien t'avouer que j'ai RIEN pigé à ta formule xD Tu peux m'expliquer ?
Merci en tout cas! Elle marchait aussi à mon avis, j'ai juste pas fait le "rm" parce qu'il fallait bien en choisir une des deux...
En tout cas, LINUX POWAAA! Hihi
Dernière modification par snipe2004 (Le 29/08/2013, à 09:29)
ACER NITRO V 515-54-75T7
i7-9750H @ 2,6 GHz x 12 + GTX 1660 Ti/PCIe/SSE2 6 Go (GDDR6)
NVMe 1 Tb, IPS 144 Hz
Hors ligne
#9 Le 29/08/2013, à 10:31
- Watael
Re : Supprimer tous les fichiers sauf...
shopt -s globstar nullglob extglob
printf '%s\n' ./**/@(!(*.jp?(e)g)|!(*.jp?(e)g)|tn_*.jp?(e)g|tn_*.jp?(e)g)
je me suis trompé, ce n'est pas dotglob, mais globstar que je voulais utiliser. Bizarrement, ça fonctionnait pas comme je le pensais (normal^^).
globstar permet de descendre dans les sous-répertoires.
nullglob fait en sorte que si aucun fichier ne correspond, alors rien n'est affiché. Sinon, bash afficherait l'expression elle-même.
extglob active la correspondance étendue (c'est un peu long à expliquer, tape man bash, puis /extglob, tu tomberas sur la description des possibilités offertes).
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 29/08/2013, à 14:32
- snipe2004
Re : Supprimer tous les fichiers sauf...
Et bin on apprend des trucs... Merci!!! Je vais aller voir
ACER NITRO V 515-54-75T7
i7-9750H @ 2,6 GHz x 12 + GTX 1660 Ti/PCIe/SSE2 6 Go (GDDR6)
NVMe 1 Tb, IPS 144 Hz
Hors ligne