Este resumen de Perl mostrará los cambios de nombre necesarios:
perl -e 'open $f[$_-1], "file$_.txt" for 1,2; print "rename @n\n" while chomp(@n = map ''.<$_>, @f)'
Si esto funciona para usted, reemplace el print
declaración con un cambio de nombre real y uso
perl -e 'open $f[$_-1], "file$_.txt" for 1,2; rename @n while chomp(@n = map ''.<$_>, @f)'
para hacer el cambio de nombre real.
Puedes usar paste
para formatear los archivos uno al lado del otro:
$ 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
Por ejemplo:
$ 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
Por supuesto, le gustaría incluir algunas comprobaciones de seguridad ([ -f "${from}" ]
, ...).
Descargo de responsabilidad:solo funciona si no hay espacios en sus nombres de archivo.
paste -d " " file1.txt file2.txt
funciona muy bien para este trabajo.
Pero en caso de que esté manejando archivos de texto en un entorno Windows y haga uso de GNU paste, asegúrese de transformar los archivos a formato Unix (CR) y no use archivos con (CR-LF).
GNU paste no parece manejar correctamente los formatos DOS y el análisis es impredecible. El resultado esperado es errático e inesperado sin advertencias.
Puede usar gVim para transformarlos fácilmente (menú Editar → Configuración de archivo → Formato de archivo ).