Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
798 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Lancer sh pour liste de dossier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer sh pour liste de dossier

n°2136427
lokomass
Posté le 13-04-2012 à 20:14:46  profilanswer
 

Bonsoir à tous,

 

J'ai créer un petit script de nettoyage, qui supprime des fichiers :

 
Code :
  1. find ./ -type d -name "*eaDir" -exec rm -rf {} \; -print 2>/dev/null
  2. find ./ -type f -name "Desktop.ini" -exec rm -rf {} \; -print 2>/dev/null
  3. find ./ -type f -name "Thumbs.db" -exec rm -rf {} \; -print 2>/dev/null
 

J'aimerais créer un lanceur de ce script qui va le lancer dans une liste de répertoire que je vais lui renseigner.

 

Comment faire ?
Merci d'avance


Message édité par lokomass le 13-04-2012 à 20:15:12
mood
Publicité
Posté le 13-04-2012 à 20:14:46  profilanswer
 

n°2136500
Profil sup​primé
Posté le 13-04-2012 à 23:50:42  answer
 

salut,
 
Pour toi, c'est quoi un lanceur ? c'est censé faire quoi, comment ?
être accessible de où, comment ?
etc
 
déjà, il pourrait n'y avoir qu'un seul find

Code :
  1. find ./ -type d _name "*eadir" -o -type f -name "Desktop.ini" -o -type f -name "Thumbs.db" -exec rm -f {} \+ 2>/tmp/find.log


pourquoi -print ? pour le debuggage ?

n°2136503
lokomass
Posté le 14-04-2012 à 00:08:37  profilanswer
 

Merci de ta réponse, je veux dire par la.
Ceci serait le fichier lancer.sh.
Et j'aimerai un autre fichier qui s'appelle runLancer.sh qui va prendre en compte une liste de dossier pour lancer le "lancer.sh" dans chacun des dossiers.
Exemple :
 
Liste=toto,tata,titi;
for each $i in Liste do
find ./ -type d _name "*eadir" -o -type f -name "Desktop.ini" -o -type f -name "Thumbs.db" -exec rm -f {} \+ 2>/tmp/find.log
done
 
La synhtaxe c'est pas ça mais pour que tu comprenne quoi ;)

n°2136510
Profil sup​primé
Posté le 14-04-2012 à 02:25:08  answer
 

pour le faire en restant POSIX, il faut jouer sur l'IFS (Internal Field Separator)

Code :
  1. #!/bin/sh
  2. separateur=":" #un caractère qu'on est sûr de ne pas trouver dans un des noms de la Liste.
  3. s="$separateur"
  4. Liste="repertoire1${s}repertoire2${s}repertoire3"
  5. oIFS="$IFS"
  6. IFS="$s"
  7. for dir in $Liste
  8. do find $dir/ -type d _name "*eadir" -o -type f -name "Desktop.ini" -o -type f -name "Thumbs.db" -exec rm -f {} \+ 2>/tmp/find.log
  9. done
  10. IFS="$oIFS"

n°2136511
Sve@r
Posté le 14-04-2012 à 02:59:35  profilanswer
 


 
Pourquoi faire une boucle alors que find peut gérer plusieurs dossiers d'un coup ???
Accessoirement, si on cherche à effacer un dossier nommé xxxeadir alors la commande rm doit avoir l'option "-r"

Code :
  1. find repertoire1/ repertoire2/ repertoire3/ -type d -name "*eadir" -o -type f -name "Desktop.ini" -o -type f -name "Thumbs.db" -exec rm -rf {} \+ 2>/tmp/find.log


Message édité par Sve@r le 14-04-2012 à 03:01:05

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Lancer sh pour liste de dossier

 

Sujets relatifs
[Batch Dos ou Powershell ]Récupérer un dossier FTP puis le purger?LANCER C++ A PARTIR DE JAVA
comment utiliser deux module liste simple avec une autre applicationLancer un programme en tache de fond Via un Batch
Liste déroulante mysql (affichage + insertion)pb liste chainée et lecture de fichier C
Liste chainee avec le mot cle THISRécupérer le contenu d'une liste dans un logiciel
gestionnaire de dossier et fichierExtraction Liste PhP - Excel
Plus de sujets relatifs à : Lancer sh pour liste de dossier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR