Name : BETA-TESTERS
Project name : ZW3B-API-BETA-TESTERS
Authorized. - 200 - Client API Name and Origin Wildcard OK
Comment-faire pour renommer plusieurs fichiers en une seule ligne de commande.
Modifier le nom de plusieurs fichiers en ligne de commandes.
Script avec 52 lignes
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 014DOMAIN_SEARCH="howto.zw3b.fr" 015#DOMAIN_REPLACE=$2 016DOMAIN_REPLACE="howto.zw3b.net" 017 018DIR="/var/lib/awstats/"; 019#DIR="/root/2/3/"; 020 021echo "SEARCH : $DOMAIN_SEARCH" 022for 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 050done; 051 052#-----------------------------------------------------------------------------------
Pour tester on va créer un dossier et 3 fichiers :
Script avec 4 lignes
001mkdir temp/ 002touch file1255.www.toto.com.txt 003touch file1245.www.tutu.com.txt 004touch file1265.www.toto.com.txtPar exemple avec les commandes
paste
et sed
Script avec 1 ligne
001paste <(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
Script avec 1 ligne
001ls *.txt | awk '{print("move "$1 " "$1)}' | sed 's/toto.com/tata.com/2'
rename
Script avec 1 ligne
001rename -nono 's/toto.com/tata.com/' *.txt
-nono
permet d'essayer la commande avant de renommer les fichiers.
How'to Optimize Code ;p ;) Kss* - Merci #josephtux
Cordialement,
Romain