Ce one-liner Perl affichera les renommages nécessaires :
perl -e 'open $f[$_-1], "file$_.txt" for 1,2; print "rename @n\n" while chomp(@n = map ''.<$_>, @f)'
Si cela fonctionne pour vous, remplacez le print
déclaration avec un vrai renommer et utiliser
perl -e 'open $f[$_-1], "file$_.txt" for 1,2; rename @n while chomp(@n = map ''.<$_>, @f)'
pour faire le changement de nom proprement dit.
Vous pouvez utiliser paste
pour formater les fichiers côte à côte :
$ paste -d" " file1.txt file2.txt
/etc/port1-192.9.200.1-255.555.255.0 /etc/port1-192.90.2.1-255.555.0.0
/etc/port2-192.9.200.1-255.555.255.0 /etc/port2-192.90.2.1-255.555.0.0
/etc/port3-192.9.200.1-255.555.255.0 /etc/port3-192.90.2.1-255.555.0.0
/etc/port4-192.9.200.1-255.555.255.0 /etc/port4-192.90.2.1-255.555.0.0
/etc/port5-192.9.200.1-255.555.255.0 /etc/port5-192.90.2.1-255.555.0.0
Ex. :
$ paste -d" " file1.txt file2.txt | while read from to; do echo mv "${from}" "${to}"; done
mv /etc/port1-192.9.200.1-255.555.255.0 /etc/port1-192.90.2.1-255.555.0.0
mv /etc/port2-192.9.200.1-255.555.255.0 /etc/port2-192.90.2.1-255.555.0.0
mv /etc/port3-192.9.200.1-255.555.255.0 /etc/port3-192.90.2.1-255.555.0.0
mv /etc/port4-192.9.200.1-255.555.255.0 /etc/port4-192.90.2.1-255.555.0.0
mv /etc/port5-192.9.200.1-255.555.255.0 /etc/port5-192.90.2.1-255.555.0.0
Bien sûr, vous voudrez ajouter quelques contrôles de sécurité ([ -f "${from}" ]
, ...).
Avis de non-responsabilité :ne fonctionne que s'il n'y a pas d'espaces dans vos noms de fichiers.
paste -d " " file1.txt file2.txt
fonctionne très bien pour ce travail.
Mais si vous manipulez des fichiers texte dans un environnement Windows et utilisez GNU paste, assurez-vous de transformer les fichiers au format Unix (CR) et n'utilisez pas de fichiers avec (CR-LF).
GNU paste ne semble pas gérer correctement les formats DOS et l'analyse est imprévisible. La sortie attendue est erratique et inattendue sans avertissements.
Vous pouvez utiliser gVim pour les transformer facilement (menu Modifier → Paramètres du fichier → Format de fichier ).