¿Quieres mejorar esta pregunta? Actualice la pregunta para que esté en el tema de Ask Ubuntu.
Cerrado hace 3 años.
Mejorar esta pregunta
Tengo una carpeta con 1000 archivos.
Su nombre es como abajo
…
…
…
que solo el medio es importante como se destaca
y tengo una clave .txt archivo en la misma carpeta con esta información
Sample P R Col
1 1 A 1
2 1 A 2
3 1 A 3
Quiero comprobar el .txt y cambie el nombre del archivo según corresponda o guárdelo con un nombre en otra carpeta. por ejemplo
.._P1_A1_..
debe ser sample1 porque cuando miro el .txt archivo , es
Sample P R Col
1 1 A 1
para el
.._P1_A2_..
debe ser sample2 porque cuando miro el .txt archivo , es
Sample P R Col
2 1 A 2
Respuesta aceptada:
Si podemos asumir con seguridad que todos sus nombres son únicos, quiero decir que solo hay un archivo cuyo nombre contiene _P1_A1 , solo uno con _P1_A2 etc., puedes hacer esto:
$ awk 'NR>1{print "mv *_P"$2"_"$3$4"* sample"$1}' key.txt
mv *_P1_A1* sample1
mv *_P1_A2* sample2
mv *_P1_A3* sample3
Awk lee su entrada línea por línea y la divide en campos en espacios en blanco. Entonces el primer campo es $1 , el segundo $2 etc. Aquí, estamos procesando el archivo de claves e imprimiendo el mv correcto comando construyéndolo a partir de los campos del archivo.
Si está seguro de que mv los comandos impresos son correctos, puede ejecutarlos con:
awk 'NR>1{system("mv *_P"$2"_"$3$4"* sample"$1)}' key.txt