¿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