Comment faire : Mode console, scripts BASH, SH...
 Charge moyenne sur 1mn : 0.41 Charge moyenne sur 5mn : 0.87 Charge moyenne sur 15mn : 0.75




Renommer plusieurs fichiers : commands rename for cut sed awk paste

Comment-faire pour renommer plusieurs fichiers en une seule ligne de commande.

Informations

Dates
  • Création : Jeudi 25 avril 2019
  • Publication : Jeudi 25 avril 2019
  • Modification : Jeudi 25 avril 2019

Partager

Traduire la page

Modifier le nom de plusieurs fichiers en ligne de commandes.

001 #!/bin/bash
002 #--------------------------------------------------------------------
003 # Auteur : LAB3W : O.Romain Jaillet-Ramey (orj@lab3w.fr)
004 #
005 # Description : Rename remake 
006 # Modifier les fichiers txt AWStats des domains
007 #
008 # Date Create : 2019-04-25
009 # Date Modify : 2019-04-25
010 #
011 #---------------------------------------------------------------------
012 
013 #DOMAIN_SEARCH=$1
014 DOMAIN_SEARCH="howto.zw3b.fr"
015 #DOMAIN_REPLACE=$2
016 DOMAIN_REPLACE="howto.zw3b.net"
017 
018 DIR="/var/lib/awstats/";
019 #DIR="/root/2/3/";
020 
021 echo "SEARCH : $DOMAIN_SEARCH"
022 for i in ${DIR}*.txt;
023         do
024 #               id=`echo $i | cut -d/ -f11`;
025                 file="`echo $i | cut -d/ -f5`"
026                 filedate="`echo $file |cut -d. -f1`"
027                 domain=`echo $file |awk -F[.] '{print $2"."$3"."$4}'`
028 
029                 echo "          Fichier $domain de $filedate non recherché"
030 
031                 if [ "${domain}" = ${DOMAIN_SEARCH} ];
032                 then
033 
034                         echo "//------------"
035                         echo "// Domain OK : $domain"
036                         echo ""
037                         domain_new="${DOMAIN_REPLACE}"
038                         echo "Fichier : $i"
039                         echo "        |"                
040                         echo "        +--> $file == $filedate.$domain.txt"
041                         echo "        +--> $file => $filedate.$domain_new.txt";
042                         echo ""
043                         mv $DIR/$filedate.$domain.txt $DIR/$filedate.$domain_new.txt
044                         echo "        Fichier renommé !"
045                         echo ""
046                         echo "//------------"
047                         echo ""         
048                 fi
049 
050 done;
051 
052 #-----------------------------------------------------------------------------------

On peut faire la même chose en une seule ligne de code.

Pour tester on va créer un dossier et 3 fichiers :

001 mkdir temp/
002 touch file1255.www.toto.com.txt
003 touch file1245.www.tutu.com.txt
004 touch file1265.www.toto.com.txt

Par exemple avec les commandes paste et sed

001 paste <(ls *.txt| sed 's/^/move "/;s/$/"/') <(ls *.txt |sed 's/^/"/;s/$/"/;s/toto.com/tata.net/g') -d ' '

Ou encore plus simplement avec sed et awk

001 ls *.txt | awk '{print("move "$1 " "$1)}' | sed 's/toto.com/tata.com/2'
Au final : en 1 seule commande rename
001 rename -nono 's/toto.com/tata.com/' *.txt

-nono permet d'essayer la commande avant de renommer les fichiers.


How'to Optimize Code ;p ;) Kss*


Liens Web :



Cordialement,
Romain


LAB3W.ORJ Alias de O.Romain JAILLET-RAMEY (NOTIF LVL 7 - 42 ans) LAB3W.ORJ
CONTACT
- Web - STEAM - Monster - LinkedIn - Viadeo - DailyMotion - FACEBOOK - GOOGLE+ - Twitter
DROITS SITES : ZW3B.Admin
INSCRIPTION : Le samedi 06 janvier 1 (2001/01/06 15:31)
CONNEXION : hier à 16h21 (2019/08/17 16:21)
DERNIERE VISITE : hier à 18h07 (2019/08/17 18:07)

les réactions des ZW3B.Nautes (0 note)

Ajouter un commentaire

Avatar par default
Pseudo :
Email :
 
Ajouter la chaine de caractères (le code) ci-dessous dans le champ du dessous.
Captcha
Code :





Valid XHTML 1.0 Strict CSS Valide !

ipv6 ready