Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#701 Le 26/10/2009, à 20:18

AnsuzPeorth

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

MekTypro a écrit :

Merci pour votre aide.
J'arrive a comprendre globalement ce que tu as écrit, mais certaines options m'intriguent :
à quoi sert le "while read" et les "-type f -name", "-exec" ?

While est une boucle ....

Bon, faudra peut être commencer par le début !
Lis déjà cette doc en entier (prends pas peur, ca se lis bien, fait un tour d'ensemble déjà, pour voir les bases du bash)
http://abs.traduc.org/abs-5.3-fr/index.html
Pour la commande find, je l'explique déjà un peu dans le script (la ligne commentée)
Sinon, man find
http://pwet.fr/man/linux/commandes/find

Aprés lecture, si tu as des questions....


MekTypro a écrit :

Et pour lancer le script a partir d'un lanceur, il suffit de pointer le lanceur vers le script ou y a t-il d'autres choses a faire ? Quand je le fais, le contenu du script s'affiche :x

Il faut rendre le script exécutable avant, attention, il faut créer les dossiers également avant (et je ne l'ai pas testé, c'était pour l'exemple, à améliorer, mais il devrait fonctionner) !

EDIT:Si tu as peur que ca disparaisse, mets cp a la place de mv, ca fera une copie, au moins pour les essais, ou modifie pour afficher uniquement le résultat, ne rien deplacer/copier.

Je me répète, avant toutes choses, commence par le commencement, lis les docs wink.

Maintenant, si tu veux pas apprendre, tu le dis, je refais le script avec les essais & co, pour ne pas avoir de problème avec. Mais je pensais que c'était plutot une question général, pour apprendre les bash !

Dernière modification par AnsuzPeorth (Le 26/10/2009, à 20:24)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#702 Le 26/10/2009, à 20:34

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Je te conseille cette structure pour find :

find /ton/répertoire/de/recherche -iname "*ton fichier à rechercher*" -exec mv {} /ton/nouveau/répertoire \;

Avec -iname tu t'embêteras moins la vie => Il ne tient pas compte de la casse.

Dernière modification par Fenouille84 (Le 26/10/2009, à 20:35)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#703 Le 26/10/2009, à 21:08

MekTypro

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Merci pour les liens, j'ai déjà lu quelques docs mais je n'ai pas trouvé les réponses a mes questions dans ces docs, j'essaye de comprendre mais les docs n'ont jamais ce que je cherche (ou alors je sais pas chercher neutral )

Je comprend pas cette ligne : echo "$NOM_SERIE" | while read ligne
Je sais que while est une boucle, mais je sais pas a quoi sert le "read" derrière (et le "|" sert de séparation ? while n'est pas sensé être en début de ligne ?). "echo" est sensé afficher du texte non ?

J'ai essayé le script avec ce que tu as écrit la page précédente, sur 7 fichiers + sous titres, 3 épisodes et 2 sous-titres sont parvenus jusqu'à mon répertoire, chaque fichiers ayant NOM_SERIE comme nom, les autres ont eu l'air de disparaître :x

Désolé encore, mais je débute ;p

Dernière modification par MekTypro (Le 26/10/2009, à 21:08)

Hors ligne

#704 Le 26/10/2009, à 21:17

yamo

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

MekTypro a écrit :

Désolé encore, mais je débute ;p

Faut suivre des cours de programmation shell, j'ai trouvé ça :


http://www.ac-creteil.fr/reseaux/systemes/linux/shell-scripts/shell-programmation.html
et
http://www.ac-creteil.fr/reseaux/systemes/linux/


Stéphane
--
Debian 9 XFCE  Xubuntu 16.04.2  - #ubuntu sur freenode

sudo / matrix

Hors ligne

#705 Le 26/10/2009, à 23:48

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@ MekTypro
Alors où en est ton script ??

Sa y est, j'en ai fini un qui devrait marcher pour ton cas smile => Certitude : 90% (les 10% c'est parce que je ne connais ni ton système, ni les noms des épisodes... Et aussi parce que je suis débutant ^^).

J'ai testé ce script chez moi, et aucun soucis.
C'est un script console. Si tu le veux, je le post. Si tu préfères chercher encore, vas-y wink


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#706 Le 26/10/2009, à 23:55

MekTypro

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Voila, en fait un ami m'a aidé sur pidgin, et il m'a fait un truc carrément plus simple que ce à quoi je m'attendais. C'est a base de :
mv /home/$USER/Documents/Download\ Vuze/Hou*.avi /home/$USER/Videos/Series/Dr*/Saison 6/ (en enlevant les accents)
Ça marche nickel, une autre ligne pour les épisodes commençant par "hou" au cas ou les types mettraient pas de majuscule, et 2 autres lignes pour les sous-titres (commençant par Hou et hou du coup).
Evidemment il y a pas mal d'erreurs a chaque fois vu que l'épisode est soit en Hou soit en hou, mais ça marche.
Maintenant je vais essayer de faire fonctionner le lanceur wink

Dernière modification par MekTypro (Le 27/10/2009, à 00:04)

Hors ligne

#707 Le 27/10/2009, à 00:07

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@ MekTypro

Tiens essaye moi sa !! sa évite de t'embêter la vie avec "Hou" "hou" pour les films, pour les sous-titres...
Mon script devrait tout prendre en compte, indépendamment de la casse !! wink

#!/bin/bash
# Version 1.0
# Ce script permet de déplacer les fichiers téléchargés dans le répertoire voulu.

clear
echo "##############################################"
echo "#                                            #"
echo "#     Script 1.0 - Déplacer les fichiers     #"
echo "#                                            #"
echo "##############################################"
echo ""
echo ""
echo -n "Nom de la série : "
read SERIE
echo -n "Chemin du répertoire source : "
read SOURCE

test -d "$SOURCE"
while [ $? != 0 ]
do
   echo ""
   echo "####### Erreur ===> Dossier inexistant #######"
   echo ""
   echo -n "Chemin du répertoire source : "
   read SOURCE
   test -d "$SOURCE"
done

echo -n "Nom du répertoire de destination : "
read REP

test -d "$REP"

if [ $? = 0 ]
then
cd "$SOURCE"
find . -maxdepth 1 -type f -iname "*$SERIE*" -exec mv {} "$REP" \;

else
mkdir "$REP" 
cd "$SOURCE"
find . -maxdepth 1 -type f -iname "*$SERIE*" -exec mv {} "$REP" \;

fi

exit 0

Enregistres tout sa.
N'oublies pas de le rendre exécutable !! et tente de le lancer pour voir.

Edit 1 :
je peux en faire une version annotée si t'as besoin.
Edit 2 : tu peux même rendre le script exécutable via un raccourci clavier !! c'est un bon plan je trouve;)

Dernière modification par Fenouille84 (Le 27/10/2009, à 00:26)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#708 Le 27/10/2009, à 00:26

MekTypro

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Oui, ça marche aussi mais ça me parait légèrement plus compliqué. Et avec ton script, faut écrire les séries/chemins, pas besoin avec le mien wink

Hors ligne

#709 Le 27/10/2009, à 00:32

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

MekTypro a écrit :

Oui, ça marche aussi mais ça me parait légèrement plus compliqué. Et avec ton script, faut écrire les séries/chemins, pas besoin avec le mien wink

Ben au moins tu décides vraiment de là où tu veux mettre des fichiers. Et en plus, comme sa tu définis le nom exact que tu veux avoir à ton dossier.

Bref, c'est toi qui voit maintenant !! (il est un peu plus complexe car il vérifie 2 ou 3 choses pour être sur de fonctionner correctement).

Edit : Après, on peut l'adapter pour avoir une interface graphique. Comme sa, on aurait juste à cliquer sur les dossiers voulus, au lieu d'écrire leur chemin.

Dernière modification par Fenouille84 (Le 27/10/2009, à 00:33)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#710 Le 27/10/2009, à 03:17

AnsuzPeorth

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Fenouille84 a écrit :
MekTypro a écrit :

Oui, ça marche aussi mais ça me parait légèrement plus compliqué. Et avec ton script, faut écrire les séries/chemins, pas besoin avec le mien wink

Ben au moins tu décides vraiment de là où tu veux mettre des fichiers. Et en plus, comme sa tu définis le nom exact que tu veux avoir à ton dossier.

Bref, c'est toi qui voit maintenant !! (il est un peu plus complexe car il vérifie 2 ou 3 choses pour être sur de fonctionner correctement).

Edit : Après, on peut l'adapter pour avoir une interface graphique. Comme sa, on aurait juste à cliquer sur les dossiers voulus, au lieu d'écrire leur chemin.

Pour ne pas récrire les chemins et noms de dossier, suffit de les mettres dans une variable, comme je l'ai proposé !

Enfin, je pense que MekTypro ne veut pas trop se prendre le choux, si il préfère écrire x lignes avec plus ou moins de succès, libre à lui smile

Pour revenir sur ton script Fenouille84, tu as raison d'en écrire, même pour rien, c'est comme ça qu'on apprends !

Sinon, je vois que tu fais des tests sur l'existence des dossiers, par exemple:

test -d "$REP"
if [ $? = 0 ]

reviens au même que (moins de commandes):

if [ -d "$REP" ]; then

Tu écris ensuite plusieurs fois les mêmes lignes dans ton if, on peut s'en passer:

test -d "$REP"

if [ $? = 0 ]
then
cd "$SOURCE"
find . -maxdepth 1 -type f -iname "*$SERIE*" -exec mv {} "$REP" \;

else
mkdir "$REP" 
cd "$SOURCE"
find . -maxdepth 1 -type f -iname "*$SERIE*" -exec mv {} "$REP" \;

fi

J'aurais plutôt fait:

#test de l'existence du dossier, utilisation de || a la place du if
#peut s'écrire aussi
#[ ! -d "$REP" ] && mkdir "$REP"
[ -d "$REP" ] || mkdir "$REP"
cd "$SOURCE"
find . -maxdepth 1 -type f -iname "*$SERIE*" -exec mv {} "$REP" \;

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#711 Le 27/10/2009, à 10:39

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

AnsuzPeorth a écrit :

J'aurais plutôt fait:

#test de l'existence du dossier, utilisation de || a la place du if
#peut s'écrire aussi
#[ ! -d "$REP" ] && mkdir "$REP"
[ -d "$REP" ] || mkdir "$REP"
cd "$SOURCE"
find . -maxdepth 1 -type f -iname "*$SERIE*" -exec mv {} "$REP" \;

Énorme la simplification !! Merci wink

Oui c'est sur que mes scripts sont super bateau, et vraiment écrit très simplement.
Et oui comme tu dis, je fais des scripts pour tout !! lol

Je suis preneur de tout conseil !! N'hésitez pas big_smile

EDIT : je post le nouveau, un peu améliorer => Pour déplacer ou copier un grand nombre de fichiers.

#!/bin/bash
# Version 1.2
# Ce script permet de déplacer les fichiers téléchargés dans le répertoire voulu.

clear

echo "==== Opération sur les fichiers ===="
echo ""
echo "1. Déplacer"
echo "2. Copier"
echo "3. Rien"
echo ""
echo -n "Quelle opération effectuer ? "
read A

case $A in
  1 | 1. )
	echo ""
	echo -n "Nom des fichiers à déplacer : "
	read SERIE
	echo -n "Chemin du répertoire source : "
	read SOURCE

	test -d "$SOURCE"
	while [ $? != 0 ]
	do
	  echo ""
	  echo "####### Erreur ==> Dossier inexistant #######"
	  echo -n "Chemin du répertoire source : "
	  read SOURCE
	  test -d "$SOURCE"
	done
	
	echo -n "Nom du répertoire de destination : "
	read REP
	[ -d "$REP" ] || mkdir "$REP"
	cd "$SOURCE"
	find . -maxdepth 1 -type f -iname "*$SERIE*" -exec mv {} "$REP" \;
	;;

  2 | 2. )
	echo ""
	echo -n "Nom des fichiers à copier : "
	read SERIE
	echo -n "Chemin du répertoire source : "
	read SOURCE

	test -d "$SOURCE"
	while [ $? != 0 ]
	do
	  echo ""
	  echo "####### Erreur ==> Dossier inexistant #######"
	  echo -n "Chemin du répertoire source : "
	  read SOURCE
	  test -d "$SOURCE"
	done

	echo -n "Nom du répertoire de destination : "
	read REP
	[ -d "$REP" ] || mkdir "$REP"
	cd "$SOURCE"
	find . -maxdepth 1 -type f -iname "*$SERIE*" -exec cp {} "$REP" \;
	;;

  3 | 3. | * )
	echo ""
	echo "Abandon - Aucune opération  effectuée"
	echo " "
	;;
esac

exit 0

Je pense que de la même façon, on peut simplifier un peu la boucle While qui teste si le chemin existe.

Dernière modification par Fenouille84 (Le 27/10/2009, à 10:47)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#712 Le 27/10/2009, à 13:36

AnsuzPeorth

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bjr,
Tu fais le même genre d'erreurs que tantot ...
Evite au maximum de copier plusieurs fois la même ligne, en codant differement !

Voilà comment je ferais (pour exemple).

#!/bin/bash
A=
reponse=false
clear

echo "==== Opération sur les fichiers ===="

while [ "$reponse" = false ]
do

echo ""
echo "1. Déplacer"
echo "2. Copier"
echo "3. Rien"
echo ""
echo -n "Quelle opération effectuer ? "
read A

if [ "$A" = 1 ] || [ "$A" = 2 ] || [ "$A" = 3 ]; then
 reponse=true
else
 echo "####### Erreur ==> Veuillez saisir un numéro proposé #######"
 reponse=false
fi

done

[ "$A" = 3 ] && echo "Abandon - Aucune opération  effectuée" && exit

    echo ""
    echo -n "Nom des fichiers à déplacer : "
    read SERIE
    echo -n "Chemin du répertoire source : "
    read SOURCE

while [ ! -d "$SOURCE" ] #ou until [ -d "$SOURCE" ]
    do
      echo ""
      echo "####### Erreur ==> Dossier inexistant #######"
      echo -n "Chemin du répertoire source : "
      read SOURCE
    done

echo -n "Nom du répertoire de destination : "
    read REP
    [ -d "$REP" ] || mkdir "$REP"
    cd "$SOURCE"

[ "$A" = 1 ] && find . -maxdepth 1 -type f -iname "*$SERIE*" -exec mv {} "$REP" \;
[ "$A" = 2 ] && find . -maxdepth 1 -type f -iname "*$SERIE*" -exec cp {} "$REP" \;
exit

Il faudrait encore vérifier que la variable SERIE soit bien remplie ([ -n "$SERIE" ])
Le script pourrait encore être amélioré, au boulot ! (il y a encore 2 lignes qui sont répétées, mais si on veut l'éviter, il n'y auras plus le message d'erreur, à voir comment contourner !)

Je n'ai rien testé du tout hein, c'est comme ça, pour faire avancer le schmilblick smile


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#713 Le 27/10/2009, à 15:36

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

AnsuzPeorth a écrit :

Bjr,
Tu fais le même genre d'erreurs que tantôt ...
Evite au maximum de copier plusieurs fois la même ligne, en codant différemment !

Voilà comment je ferais.

yikes Quelle simplification !! Chapeau et surtout merci !! wink

Je l'ai modifié un peu :
* Modification de la mise en forme
* Ajout d'une dépendance zenity pour sélectionne graphiquement le dossier source.
* Donc suppression de la boucle vérifiant si ce dossier source existe.
* Suppression de A= en début de script (cette ligne est inutile).

EDIT :
Mises à jour 2.0
* Grande simplification du code grâce à AnsuzPeorth
Mises à jour 2.2
* Le script permet maintenant de déplacer/copier soit des fichiers, soit des dossiers (selon le choix de l'utilisateur).
* Le script intègre une interface graphique (via zenity) pour sélectionner/créer les fichiers (source et destination).
Mises à jour 2.4
* Boucle permettant d'effectuer plusieurs opérations sur les fichiers/dossiers sans relancer le script à chaque fois.

Voici la dernière version :

#!/bin/bash
# Version 2.4
# Ce script permet de déplacer/copier massivement des fichiers/dossiers dans le répertoire voulu.

### Boucle SUDO ###
sudo -k
clear
  echo "###  Droits administrateur nécessaires pour l'exécution  ###"
  echo "------------------------------------------------------------"
  echo
US=`sudo whoami`
if [ "$US" = 'root' ]
then
  echo
  echo "###  Droits administrateur obtenus - Exécution accordée  ###"
  echo "------------------------------------------------------------"
  echo ; echo
else
  echo 
  echo "###  Droits administrateur erronés - Exécution refusée  ###"
  echo "-----------------------------------------------------------"
  echo
  exit 1
fi
##

### Script ###
MAIN=n

while [ "$MAIN" = n ]
do
  reponse=false
  clear
  echo "============= Opération sur les fichiers ============="
  echo "------------------------------------------------------"
  while [ "$reponse" = false ]
  do
    echo 
    echo "1. Déplacer"
    echo "2. Copier"
    echo "3. Rien"
    echo 
    echo -n "Quelle opération effectuer ? "
    read A
  
    if [ "$A" = 1 ] || [ "$A" = 2 ] || [ "$A" = 3 ]
      then
       reponse=true
      else
       echo "Erreur ==> Veuillez saisir un numéro proposé."
       reponse=false
    fi
  
  done
  
  [ "$A" = 3 ] && echo "==> Opérations terminées" && echo && exit 0
  
  echo -n "Fichiers / Dossiers [f/d] ? "
  read TYPE
    if [ "$TYPE" = d ] || [ "$TYPE" = D ] || [ "$TYPE" = dossier ] || [ "$TYPE" = Dossier ] || [ "$TYPE" = dossiers ] || [ "$TYPE"   = Dossiers ]
    then
      TYPE=d
    else
      TYPE=f
    fi
  echo -n "Mots clé à chercher : "
  read SERIE
  echo
  
  SOURCE=`zenity --file-selection --directory --title="Sélectionnez le répertoire source"`
  echo "Répertoire source : "$SOURCE
  
  DEST=`zenity --file-selection --directory --title="Sélectionnez le répertoire destination"`
  echo "Répertoire destination : "$DEST
  echo
  
  cd "$SOURCE"
  
  [ "$A" = 1 ] && find . -maxdepth 1 -type $TYPE -iname "*$SERIE*" -exec mv {} "$DEST" \;
  [ "$A" = 2 ] && find . -maxdepth 1 -type $TYPE -iname "*$SERIE*" -exec cp {} "$DEST" \;
  
  echo "==> Opération effectuée avec succès."
  echo
  echo -n "Avez-vous terminé les opérations [o/n] ? "
  read MAIN

done

echo "==> Opérations terminées"

exit 0

Voili voilou ^^

Dernière modification par Fenouille84 (Le 27/10/2009, à 22:58)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#714 Le 27/10/2009, à 15:37

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

BOUCLE SUDO => Etre sur que le script se lance avec les droits administrateurs !!

#!/bin/bash
# Script 1.0
# Ce script permet de ...

# Boucle SUDO
sudo -k
clear
  echo "###  Droits administrateur nécessaires pour l'exécution  ###"
  echo "------------------------------------------------------------"
  echo
US=`sudo whoami`
if [ "$US" = 'root' ]
then
  echo
  echo "###  Droits administrateur obtenus - Exécution accordée  ###"
  echo "------------------------------------------------------------"
  echo ; echo
else
  echo 
  echo "###  Droits administrateur erronés - Exécution refusée  ###"
  echo "-----------------------------------------------------------"
  echo
  exit 1
fi

clear

# Insérer ci-dessous la suite du script
...
...

Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#715 Le 28/10/2009, à 12:36

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour

Existe-t-il un moyen simple de renommer des dossiers du type => "Nom - Date - Prénom - Mots clé" vers quelque chose du genre => "Prénom - Mots clé"

Je ne m'y connais pas trop encore en commande. Je suis ultra novice.
Donc bêtement, je tente avec find et cut, mais c'est injouable !! trop complexe hmm

Une idée svp ?

Edit : en gros, couper le nom du dossier après une date de format : 2009-06-17

Dernière modification par Fenouille84 (Le 28/10/2009, à 13:08)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#716 Le 28/10/2009, à 13:34

AnsuzPeorth

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bjr,
Tes dossiers ont tous le même format , CAD "Nom - Date - Prénom - Mots clé"
Ou ca peut changer ?

Sinon, il y a la commande rename, mais pour le découpage, faut voir les noms de dossiers.

Donne qqles exemple précis, avant, après.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#717 Le 28/10/2009, à 14:07

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Alors ce sont des fichiers du genre :

"DVD Live_part1 - 2008-08-17 - The White Stripes - Memphis - USA"
"Album live in Paris - 2000-03-21 - Linkin Park - Meteora/Reanimation"

Que je voudrais renommer en :

"The White Stripes - Memphis - USA"
"Linkin Park - Meteora/Reanimation"

=> Couper le nom du fichier juste après la date, et ne garder que ce qui suit la date.


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#718 Le 28/10/2009, à 14:47

AnsuzPeorth

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bon,
Il faudra utiliser rename (par exemple).
A savoir qu'il utilise le remplacement comme sed (sauf que c'est du perl-regex, et je suis pas spécialiste smile)

Ex avec sed:

echo "DVD Live_part1 - 2008-08-17 - The White Stripes - Memphis - USA" | sed 's@^.*[0-9] - @@'
The White Stripes - Memphis - USA

Donc avec rename, attention, je n'ai pas testé (il faudra travailler sur le nom de fichier, par sur le chemin avec l'exemple qui suit):

ls | xargs rename 's@^.*[0-9] - @@'

ou par fichier dans une boucle par exemple:

rename 's@^.*[0-9] - @@' fichier

ou pour traiter tout un dossier

cd dossier
rename 's@^.*[0-9] - @@' *

Ca doit être possible également de renommer avec les chemins (donc en sortie de find)

Je dois m'absenter qqles heures, je ferais des test après, si tu n'y arrives po !

EDIT: peut etre que le ^ sera de trop dans rename, à essayer.

Dernière modification par AnsuzPeorth (Le 28/10/2009, à 14:49)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#719 Le 28/10/2009, à 15:16

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@ AnsuzPeorth

Merci !!!! J'ai dû modifier un peu ta commande, mais sa fonctionne smile

Edit : voici la version finale

#!/bin/bash
# Version 1.0
# Script permet de renommer massivement les dossiers/fichiers d'un répertoire.
# Dossiers/fichiers nommés sous la forme :
### DVD Live_part1 -       2008-08-17      - The White Stripes - Memphis - USA
###        Nom        -   Date (2001-01-01) -         Prénom       - Mot clé

clear
echo "================ Renommer les fichiers ==============="
echo "------------------------------------------------------"
echo
echo -n "Renommer les fichiers du répertoire habituel [o/n] ? "
read REP

[ "$REP" = o ] || exit 0
cd /répertoire/avec/fichier-dossiers/à/renommer
ls | rename 's@^.*[0-9] - @@'
echo "Renommage effectué avec succès"
echo

exit 0

P.S. :
Tu pourrais m'expliquer un peu la commande stp ? j'arrive pas à la décortiquer... hmm
(J'ignore tout de sed... Pour un débutant, c'est assez complexe dans la syntaxe je trouve !!)

Dernière modification par Fenouille84 (Le 28/10/2009, à 16:22)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#720 Le 28/10/2009, à 18:46

AnsuzPeorth

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Tu pourrais enlever le ls (une commande de moins) comme je te l'ai proposé au dessus

cd dossier
rename 's@^.*[0-9] - @@' *

Pour sed, un trés bon tutoriel (plus de place pour l'ajouter à ma signature !)
http://www.commentcamarche.net/faq/suje … sed-part-i

Pour dégrossir

sed 's@^.*[0-9] - @@'

^ = debut de ligne
.* = repetition de n'importe quel caractère
[0-9] = un chiffre

Le @ remplace les / habituels dans sed, pour éviter les problèmes sur les traitements de chemins (des fois que tu voudrais travailler avec find et le chemin complet)

Dernière modification par AnsuzPeorth (Le 28/10/2009, à 18:47)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#721 Le 28/10/2009, à 22:04

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@ AnzusPeorth
Merci pour tes renseignements wink
et en effet, la 2° fonctionne pour renommer tout le répertoire.

Je vais aller lire le méga tuto de sed !! J'ai de quoi m'occuper là roll


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#722 Le 30/10/2009, à 11:33

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour, c'est encore moi big_smile

J'aurais besoin de votre aide pour simplifier un script !! Je me suis créé un script de maintenance, construit comme sa :

Que voulez-vous faire ?
  1. Maintenance historique
  2. Maintenance MAJ
  3. Maintenance complète
  4. Quitter

read REP

case $REP in
  1 ) 
  code pour toutes les actions supprimant l'historique
  ;;
  2 ) 
  code pour toutes les actions mettant à jour les paquets
  ;;
  3 ) 
  code pour toutes les actions supprimant l'historique
  code pour toutes les actions mettant à jour les paquets
  ;;
esac

exit 0

J'ai donc une répétition massive de code hmm

Il y aurait-il un moyen de rendre ce script plus simple ? Ou moins redondant en tout cas ?
merci pour vos suggestions wink

Dernière modification par Fenouille84 (Le 30/10/2009, à 11:33)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#723 Le 30/10/2009, à 13:55

AnsuzPeorth

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bjr,
Une solution est de mettre tes codes dans des fonctions:

function Historique()
{
code pour toutes les actions supprimant l'historique
}
function Maj()
{
code pour toutes les actions mettant à jour les paquets
}
Que voulez-vous faire ?
  1. Maintenance historique
  2. Maintenance MAJ
  3. Maintenance complète
  4. Quitter

read REP

case $REP in
  1 ) 
      Historique;;
  2 ) 
      Maj;;
  3 ) 
       Historique
       Maj;;
esac

exit 0

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#724 Le 30/10/2009, à 14:27

Fenouille84

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

AnsuzPeorth a écrit :

Bjr,
Une solution est de mettre tes codes dans des fonctions:

yikes Mais quel idiot !!! Évidement !!!
Le pire, c'est que je me suis déjà servi de ce procédé au sein même de ce script !! roll

Bref, merci big_smile

Dernière modification par Fenouille84 (Le 30/10/2009, à 14:59)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#725 Le 05/11/2009, à 19:10

lekokeliko

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

un ptit peu d'aide par ici création de script pour retoucher une feuille de style faite pas kompozer http://forum.ubuntu-fr.org/viewtopic.php?id=355693

merci


No brain, No fear !
http://www.dailymotion.com/lekokeliko    ~Tictactux~  site internet crée par moi     
On em#%*de les ingénieurs, on test et on voit si ca l'fait ou pas ;)
A Embrun

Hors ligne