Search and destroy [LINUX] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 24-03-2005 à 09:38:01
Je suis pas particulièrement chaud pour changer l'IFS d'un serveur qui tourne avec 890 utilisateurs et 300 bécanes au cul...
Marsh Posté le 24-03-2005 à 09:47:43
find toto/ -iname *.mp3 -exec rm {} \; |
Tu appliques rm au résultat de find, les espaces ne seront pas un pb je viens de tester.
Marsh Posté le 24-03-2005 à 09:49:44
nicephore17 a écrit :
|
Code :
|
Marsh Posté le 24-03-2005 à 09:50:18
# !/bin/sh |
Un truc dans ce goût là?
Je vais essayer.
Neriki -> pas bon, j'avais essayé, il interprète ça comme si il devait effacer le fichier "$son"
Marsh Posté le 24-03-2005 à 09:59:50
ReplyMarsh Posté le 24-03-2005 à 10:40:17
2 solutions ( a mon avis ) :
- Faire le script dans un vrai langage de programation qui ne se pose pas ce genre de problèmes. Suggestions : Python, Perl
- find toto/ -iname *.mp3 -exec rm \"{}\" \;
Marsh Posté le 24-03-2005 à 12:06:12
ReplyMarsh Posté le 24-03-2005 à 12:21:54
Ce script m'interesse , ce serait possible de le coupler avec "file" au cas où l'extension du fichier serait modifiée.
Sur samba, on peut ajouter l'option
veto files = /*.mp3/*.MP3/*.mpg/*.MPG
veto files(S)
This is a list of files and directories that are neither visible nor accessible. Each entry in the
list must be separated by a '/', which allows spaces to be included in the entry. '*' and '?' can
be used to specify multiple files or directories as in DOS wildcards.
Marsh Posté le 24-03-2005 à 13:48:43
hwlm a écrit : Ce script m'interesse , ce serait possible de le coupler avec "file" au cas où l'extension du fichier serait modifiée. |
Je suis contre le véto dans mon environnement...
1) ce n'est pas "pédagogique"
2) difficile de gérer les "exceptions"
Marsh Posté le 24-03-2005 à 13:55:41
ma solution marche pas chez toi ?
Marsh Posté le 24-03-2005 à 13:58:53
Xavier_OM a écrit : ma solution marche pas chez toi ? |
se3pdc:~# find /root -iname *.mp3 -exec rm {} ; |
Marsh Posté le 24-03-2005 à 13:59:38
j'ai écris \; et pas ;
Marsh Posté le 24-03-2005 à 14:04:04
Xavier_OM a écrit : j'ai écris \; et pas ; |
exact, ça marche.
Tu sais comment je peux logger dans la même manip?
find /root -iname *.mp3 > mp3.log -exec rm {} \; |
???
Marsh Posté le 24-03-2005 à 14:08:22
euh faudrait mettre dans le -exec et avant le rm un truc genre echo {} >> log je pense
edit : ptet un truc genre
find /tmp -iname *.mp3 -exec echo {} >> log \; -exec rm {} \;
Marsh Posté le 24-03-2005 à 14:57:20
Xavier_OM a écrit : euh faudrait mettre dans le -exec et avant le rm un truc genre echo {} >> log je pense |
Je connaissait pas cette façon se scripter, c'est quoi, du Batch? Tu as des liens avec des info là dessus que je potasse?
Marsh Posté le 24-03-2005 à 15:02:42
nicephore17 a écrit : Je connaissait pas cette façon se scripter, c'est quoi, du Batch? Tu as des liens avec des info là dessus que je potasse? |
man find
Ce n'est pas du shell scripting en fait, pour vraiment faire appel au shell il aurait fallu un for i in `find blabla` do truc done
Mais find fournit une option -exec qui permet d'appliquer une commande pour chaque résultat de find (pour chaque fichier trouvé)... c'est pour ca que le -exec rm marche bien pour ce que tu veux faire ( {} est la "chaine" désignant le résultat de find )
En gros ma commande précédente suggère juste un find -exec toto -exec tata, et je m'aperçois que ca peut vraiment marcher en fait
Marsh Posté le 24-03-2005 à 15:09:45
ReplyMarsh Posté le 24-03-2005 à 18:08:32
m'intéresse!
Alors tu as pu tester les methodes décrites ci-dessus?
Marsh Posté le 24-03-2005 à 09:29:21
Bonjour,
C'est la guerre ici, je suis en lutte contre mes utilisateurs qui saturent les disques de mon serveur à coup de MP3, de WMA (beurk) et vidéos etc.
Evidemment je ne peux pas laisser faire ça. Mon but est donc de rechercher le fichiers et de les supprimer...
Comme ceci:
find /home -iname *.mp3 > mp3.log
rm `cat mp3.log`
Ca ne fonctionne pas à cause des espaces dans certains nom de fichiers.
J'ai pensé à un script:
# !/bin/sh
for son in `find /home -iname *.mp3`
do
rm $son
done
Même souci, je n'arrive pas à "échapper" ces foutus espaces, quelqu'un a-t-il une idée?
Message édité par nicephore17 le 24-03-2005 à 14:59:08