Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 15/07/2010, à 10:20

RegisBurin

Suppression de "polluants" en 1 ligne

Salut tous

Je pense que la demande à déjà été faite, mais bon... piqure de rappel on va dire...

Je suis en train de m'amuser dans un terminal à chercher et supprimer certains types de fichiers/dossiers (des Thumbnails et autres desktop.ini hérités de Windows, et des poubelles) sur un disque dur externe contenant des données communes Linux/Win... Ce, à grand coup de

find ... -name ... -delete
# et de ...
rm -r ...

L'un d'entre vous pourrait-il me suggérer une commande qui supprimerait les fichiers:
- "*esktop.ini" (j'en trouve avec et sans majuscule)
- "*Thumb*" (il existe des Thumbs.db, des Thumbnail.bin et des ZbThumbnail.info)

Ainsi que les dossiers:
- RECYCLER/
- System\ Volume\ Information/
- .Trash-*/

Le tout en une seule ligne, bien concise (la plus "compactée" possible). Je voudrait aussi qu'il me verbose ce qu'il trouve et qu'il me demande confirmation de la suppression.

Ca me permettra de mieux appréhender les commandes un peu complexes, imbriquées, avec pas mal d'options...

Merci d'avance wink

PS: Si vous voyez d'autres dossiers/fichiers à ajouter à la liste...

Dernière modification par RegisBurin (Le 15/07/2010, à 10:29)


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#2 Le 15/07/2010, à 13:40

beware

Re : Suppression de "polluants" en 1 ligne

Salut,

Pourquoi vouloir absolument tout faire en une seule ligne ?

Hors ligne

#3 Le 15/07/2010, à 20:50

RegisBurin

Re : Suppression de "polluants" en 1 ligne

beware a écrit :

Salut,

Pourquoi vouloir absolument tout faire en une seule ligne ?

Non, en fait l'exigence (qui n'en est même pas une d'ailleurs), en soi, n'est pas "avoir à tout prix une ligne unique", c'est juste de concaténer le plus possible le nombre de commandes pour exécuter ces actions...

-Parce que (et je m'auto-quote):

RegisBurin a écrit :

Ca me permettra de mieux appréhender les commandes un peu complexes, imbriquées, avec pas mal d'options...

- Parce que ce sont des opérations (si on les prend une à une) redondantes et rébarbatives, et que le bash, ça sert à ça... (se simplifier la vie)

- Par simple curiosité

- Pour voir les différentes propositions que l'on va me soumettre, les comparer et en apprendre d'avantage sur la puissance des commandes désignées comme étant "de base"

- Je continue...?


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#4 Le 15/07/2010, à 21:47

ehmicky

Re : Suppression de "polluants" en 1 ligne

find / \( -iname "desktop.ini" -o -name "*Thumb*" -o -name "RECYCLER" -o -name "System Volume Information" -o -name "\.Trash-*" \) -okdir true \; -delete

Toujours faire attention avec un find -delete, surtout quand il cible le répertoire root... Je te conseille de remplacer -delete par -print le temps du test de la commande, sinon ça peut faire mal neutral

Dernière modification par ehmicky (Le 15/07/2010, à 21:57)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#5 Le 15/07/2010, à 22:02

johndo

Re : Suppression de "polluants" en 1 ligne

Bonsoir,

Lorsque je suis passé sur le forum cet a.m, je n'ai pas voulu te donner la réponse que tu attendais ...
(va savoir, je ne suis peut-être pas d'humeur ou peut-être qu'il y a quelque chose qui ne me convient pas dans ta demande ... ne le prend pas mal wink)

Toujours est-il que je constate une chose : il est 23h passé et tu viens tout juste d'avoir une réponse à ta question posée à 11h20 ce matin sur un forum très actif yikes
Je ne saurais trop te conseiller de mettre ton nez dans le man de find pendant 10min, ça t'évitera d'attendre plus de 11h pour rien. wink

désolé d'être "légèrement" désagréable mais je ne comprends pas pourquoi une personne souhaitant
"mieux appréhender les commandes un peu complexes, imbriquées, avec pas mal d'options..." ne commence pas par le commencement : la documentation ...

Dernière modification par johndo (Le 15/07/2010, à 22:07)

Hors ligne

#6 Le 16/07/2010, à 08:24

RegisBurin

Re : Suppression de "polluants" en 1 ligne

Salut johndo

Alors il se trouve que j'ai posté ça après avoir passé 2 petites heures avec la manpage ouverte en plein écran et quelques onglets firefox traitant du sujet, que j'ai déjà appris beaucoup grâce à ça, et que j'ai déjà fait pas mal d'essai de mon coté. Par contre, si effectivement la manpage se lit en 3 min, elle ne m'a absolument pas permis de composer une commande telle que celle proposée par ehmicky...! Ca ne m'a permis, non plus, de comprendre de façon intrinsèque comment fonctionne cette commande (non par les options qu'elle comporte, mais par sa simple syntaxe -pourquoi ce point-virgule, ces parenthèses...). Mais maintenant l'enjeu (et le jeu, car je prend tout ça comme un jeu) pour moi est d'étudier la commande et d'en comprendre la syntaxe et le fonctionnement. Et ça ne m'a, enfin, pas permis de me rassurer face aux risques que comportent les commandes de suppression de fichiers.

Si ça prend 10 min de lire une doc, ça demande quelques heures de manip avant de la comprendre et de composer une telle commande. Et le fait de demander des exemples me permettrait de diviser ce temps par deux, et de parfaire la gymnastique cérébrale lié à l'utilisation des commandes. Aussi simples et futiles soient-elles.

Maintenant si je dois passer plus de temps et de posts à me justifier par rapport à ma demande, qu'à répondre au sujet et remercier les gens qui m'aideront/m'apprendront... bah je vais vite laisser tomber et faire autrement ou ailleurs... Ce n'est absolument pas grave.
Je ne demande pas qu'on me ponde un truc tout cuit parce que j'ai la flemme (les actions de suppression, elles sont déjà faites), je demande à ce qu'on me soumette des idées pour améliorer un truc que je sais faire de façon très maladroite et pas optimisé.

On est jamais mieux servi que par soi-même, mais l'autodidaxie à ses limites. Et pour se sortir de la stagnation logique qui intervient dans tout processus d'auto-apprentissage, il faut demander des conseils aux autres... !
Au bout d'un moment, et une manpage en amenant quelques autres, il devient facile de se perdre. Et avoir quelqu'un (ou des exemples) pour valider qu'on est pas en train de faire une boulette, ça peut aider...

Voilà, je viens de dépenser du temps, du café et du tabac smile à te répondre, et je n'ai même pas encore tester ce que me propose ehmicky... hmm

'fin bon, bref...

Dernière modification par RegisBurin (Le 16/07/2010, à 08:37)


Ma config (M-AUDIO Delta44/Wacom CTH661) | BabyBox[WIP]
Moi sur le web ("Régis est un cool") / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#7 Le 16/07/2010, à 11:54

Airballman

Re : Suppression de "polluants" en 1 ligne

Et la t'as testé? tongue

Hors ligne

#8 Le 16/07/2010, à 16:48

ehmicky

Re : Suppression de "polluants" en 1 ligne

Si tu veux te passer du fait de taper -iname "quelquechose" ou -name "quelquechose" ou -name quelquechose..., tu peux utliser les expressions régulières (car -name utilise le globbing) :

find / -regex ".*\([dD]esktop.ini\|Thumb\|RECYCLER\|System Volume Information\|\.Trash-\)[^/]*" -okdir true \; -delete

Pour ta question concernant le fait que le point-virgule soit échappé par \, c'est parce que sinon il est interprété comme un point-virgule terminant la ligne courante (donc le find), ainsi la suite du find sera considéré comme faisant partie d'une seconde ligne de commande.

Dernière modification par ehmicky (Le 16/07/2010, à 17:13)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#9 Le 16/07/2010, à 18:51

johndo

Re : Suppression de "polluants" en 1 ligne

@RegisBurin :
si c'est réellement le cas, alors ta démarche n'est pas la bonne. A mon sens, il aurais fallu que tu aies une approche différente; à savoir : présenter tes différentes tentatives et demander pourquoi elles n'ont pas fonctionné.

Ceci dit : un petit retour d'expérience me fait dire que find n'est pas la solution pour certains dossiers.

Hors ligne

#10 Le 16/07/2010, à 19:53

ehmicky

Re : Suppression de "polluants" en 1 ligne

johndo a écrit :

Ceci dit : un petit retour d'expérience me fait dire que find n'est pas la solution pour certains dossiers.

Quel genre de dossiers ?


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#11 Le 16/07/2010, à 22:43

Airballman

Re : Suppression de "polluants" en 1 ligne

En fait je n'ai pas de connexion filaire, je suis en tout wifi. Et je n'ai pas vraiment de possibilité de changer les choses :s. Vous auriez une idée de solution?
En tout cas merci pour vos reponses smile

Dernière modification par Airballman (Le 16/07/2010, à 22:43)

Hors ligne

#12 Le 16/07/2010, à 23:55

johndo

Re : Suppression de "polluants" en 1 ligne

ehmicky a écrit :

Quel genre de dossiers ?

Si le fonctionnement de find n'a pas changé, que déduire de l'éxécution de ceci ?

cd ~
mkdir -p johndo/{a,b}
cd johndo
touch a/f
find . -type d -mindepth 1 -delete
ls */*
cd -
rm -rf johndo

note : rectification, ce n'est pas find qui serait à remettre en cause si mes craintes sont avérées, mais l'option -delete (je n'ai pas la possibilité de tester !).

Hors ligne

#13 Le 17/07/2010, à 03:08

ehmicky

Re : Suppression de "polluants" en 1 ligne

L'option -delete ne peut pas supprimer les répertoire non vides, c'est pourquoi elle implique l'option -depth, qui supprime les fichiers à l'intérieur des répertoires avant les répertoires eux-mêmes. Or, utiliser -type "d" empêche cette récursion si le répertoire contient autre chose que d'aures répertoires.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#14 Le 17/07/2010, à 07:57

fabux

Re : Suppression de "polluants" en 1 ligne

Salut,

@RegisBurin: je m'incruste, tu peux jeter un œil à ce thread où tu as quelques pistes (ce que tu veux si j'ai bien compris): find + delete, find + xargs , rm +find, locate +xargs...
Pour l'utilité des ;[}...il faut regarder dans les liens donnés dans l'épingle de ce forum. Ou alors certains commentaires dans les threads (notamment de Totor)

Hors ligne

Haut de page ↑