OVH Cloud OVH Cloud

[SHELL] rm .DS_Store recursif ?

23 réponses
Avatar
jtnews
Bonjour,

Quelqu'un aurait il deja ecrit un shell script pour detruire recursivement
les fichiers .DS_Store a partir d'un repertoire ?

Merci
Jean

--
Jean Thioulouse - Equipe "Ecologie Statistique" - UMR CNRS 5558
Universite Lyon 1, Bat. Mendel, 69622 Villeurbanne Cedex, France
Fax: (33) 4 78 89 27 19 Tel: (33) 4 72 43 27 56

10 réponses

1 2 3
Avatar
Martin.Jourdan
Henri Balmain wrote:

rm .DS_Store
rm */.DS_Store
rm */*/.DS_Store
rm */*/*/.DS_Store
rm */*/*/*/.DS_Store
...

Y'a pas plus simple.



Si

find . -name .DS_Store -print | xargs rm -f
--
Martin Jourdan
Informaticien, fan de Macintosh (X), de Peter Gabriel et de volley-ball


Avatar
Eric Jacoboni
(Martin Jourdan) writes:

find . -name .DS_Store -print | xargs rm -f


Encore que :

find . -name .DS_Store -exec rm {} ;

Soit un poil plus court... ;-)


--
Éric Jacoboni, né il y a 1369959115 secondes

Avatar
Martin.Jourdan
Eric Jacoboni wrote:

find . -name .DS_Store -print | xargs rm -f


find . -name .DS_Store -exec rm {} ;
Soit un poil plus court... ;-)


oui mais beaucoup moins efficace car cela lance un processus "rm" pour
chaque fichier trouvé tandis que ma solution ne lance qu'un processus
pour tous les fichiers (grosso modo).
--
Martin Jourdan
Informaticien, fan de Macintosh (X), de Peter Gabriel et de volley-ball


Avatar
FiLH
(Martin Jourdan) writes:

Eric Jacoboni wrote:

find . -name .DS_Store -print | xargs rm -f


find . -name .DS_Store -exec rm {} ;
Soit un poil plus court... ;-)


oui mais beaucoup moins efficace car cela lance un processus "rm" pour
chaque fichier trouvé tandis que ma solution ne lance qu'un processus
pour tous les fichiers (grosso modo).


Heu.. les rm commencent-ils dès le premier fichier ?

Quand on a besoin de place VITE, on efface au plus vite.

FiLH, l'efficacité absolue est relative au pb que l'on veut traiter :)



--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/



Avatar
Schmurtz
find . -name .DS_Store -print | xargs rm -f


find . -name .DS_Store -exec rm {} ;
Soit un poil plus court... ;-)


oui mais beaucoup moins efficace car cela lance un processus "rm" pour
chaque fichier trouvé tandis que ma solution ne lance qu'un processus
pour tous les fichiers (grosso modo).


Il n'y a pas de limitation du nombre de fichiers avec xargs ? Je pose la
question car dans le terminal, si la taille de la commande est trop
importante, il renvoie un message d'erreur.

--
Schmurtz



Avatar
Philippe Di Valentin
Le 19/10/03 15:40, Martin Jourdan écrivait:

Eric Jacoboni wrote:

find . -name .DS_Store -print | xargs rm -f


find . -name .DS_Store -exec rm {} ;
Soit un poil plus court... ;-)


oui mais beaucoup moins efficace car cela lance un processus "rm" pour
chaque fichier trouvé tandis que ma solution ne lance qu'un processus
pour tous les fichiers (grosso modo).
Plutot grosso que modo,encore que:-)))))

--
• Philippe



Avatar
Martin.Jourdan.nospam
Schmurtz wrote:

Il n'y a pas de limitation du nombre de fichiers avec xargs ? Je pose la
question car dans le terminal, si la taille de la commande est trop
importante, il renvoie un message d'erreur.


xargs connaît la taille maximale d'une ligne de commande donc :
- il ouvre une première ligne avec ses propres arguments (ici 'rm -f ')
;
- pour chaque nom de fichier qu'il reçoit sur son entrée standard, il
commence à comparer sa longueur avec la place disponible sur la ligne
qu'il est en train de remplir ;
- si ça rentre, il ajoute le nom du fichier lu à la ligne en cours de
construction ;
- sinon, il envoie la ligne courante à un shell, ouvre une nouvelle
ligne de commande avec ses propres arguments et y ajoute le nom du
fichier ;
- quand son entrée standard est épuisée, il envoie la ligne courante à
un shell.

Faites le test suivant :
find . -type f -print | xargs wc -l
sur un répertoire contenant beaucoup de fichiers, vous verrez apparaître
de temps en temps des lignes "total" indiquant qu'un wc se termine...

C'est pour cela que je disais "grosso modo" dans mon post précédent :
s'il y a *vraiment* beaucoup de fichiers, xargs peut être amené à lancer
plus d'un processus.

Je hope que ça helpe.
--
Martin Jourdan
Informaticien, fan de Macintosh (X), de Peter Gabriel et de volley-ball

Avatar
Martin.Jourdan.nospam
FiLH wrote:

Heu.. les rm commencent-ils dès le premier fichier ?


Non, il attend d'avoir trouvé tous les fichiers ou du moins d'en avoir
accumulé assez pour remplir une ligne de commande (voir mon autre post
dans ce fil).

Quand on a besoin de place VITE, on efface au plus vite.


find et xargs vont très vite : sur mon home-Dir comportant plus de 44000
fichiers dans un disque contenant 16 Go sur 49, "find . -name .DS_Store
-print | wc" (ce qui est le plus proche possible d'un find "pur") prend
17 secondes de temps réel pour me trouver les 106 .DS_Store sur mon iMac
G4 17" 800 à moi que j'ai avec un disque qui n'est pas un foudre de
guerre. Je n'ai pas testé avec le "rm" mais à mon avis, au pire cela
double le temps total. 30 secondes, c'est trop ?
--
Martin Jourdan
Informaticien, fan de Macintosh (X), de Peter Gabriel et de volley-ball

Avatar
FiLH
(Martin Jourdan) writes:

FiLH wrote:

Heu.. les rm commencent-ils dès le premier fichier ?


Non, il attend d'avoir trouvé tous les fichiers ou du moins d'en avoir
accumulé assez pour remplir une ligne de commande (voir mon autre post
dans ce fil).

Quand on a besoin de place VITE, on efface au plus vite.


find et xargs vont très vite : sur mon home-Dir comportant plus de 44000


C'est peu. (Désolé ).

fichiers dans un disque contenant 16 Go sur 49, "find . -name .DS_Store
-print | wc" (ce qui est le plus proche possible d'un find "pur") prend


C'est peu de Go et c'est un disque rapide.

D'autre part quand j'utilise find sur un partagé nfs utilisé en
même temps par 80 utilisateurs qui attendent de la place disque, le
parcours est un peu plus long que 17 secondes :)

:)

FiLH (Bon je sais sur son mac monoutilisateur à la maison c'est pas pareil)




--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/


Avatar
Martin.Jourdan.nospam
FiLH wrote:

C'est peu de Go et c'est un disque rapide.


Non ce n'est pas un disque rapide (5400 t/mn)
D'autre part quand j'utilise find sur un partagé nfs utilisé en
même temps par 80 utilisateurs qui attendent de la place disque, le
parcours est un peu plus long que 17 secondes :)


Tu ne m'avais pas tout dit.

Au boulot aussi j'ai des disques NFS très partagés donc je sais ce que
ça veut dire d'attendre. Mais quand on a 80 utilisateurs sur le dos, on
ne laisse pas l'occupation grimper jusqu'à 100% sans la surveiller !
--
Martin Jourdan
Informaticien, fan de Macintosh (X), de Peter Gabriel et de volley-ball

1 2 3