script para generar comandos, mover la estación de trabajo de una carpeta zman a otra

script para generar comandos, mover la estación de trabajo de una carpeta zman a otra

Ejecuto un comando en el servidor que enumera las estaciones de trabajo en una carpeta.

Según los primeros 3 caracteres del nombre de la estación de trabajo, quiero mover la estación de trabajo de la carpeta actual a una carpeta nueva.

entonces el comando: zman wl /Workstation/Buildenumeraría las estaciones de trabajo en la carpeta Build de la siguiente manera.

/Workstation/Build/red-001
/Workstation/Build/sci-001
/Workstation/Build/shs-001

Ahora tengo un archivo de definiciones que me dice dónde mover la estación de trabajo según los primeros 3 caracteres del nombre de la estación de trabajo.

red /Workstation/Staff/Red
sci /Workstation/Staff/Sci
shs /Workstation/Staff/Shs

Así que estoy buscando un script o comando que enumere la estación de trabajo en la carpeta "de" y luego busque los primeros 3 caracteres del nombre de la estación de trabajo en el archivo de definiciones para obtener la carpeta "a" y mover la estación de trabajo allí.

El comando de movimiento sería.

zman wmv /Workstation/Build/Red-001 /Workstation/Staff/Red

Respuesta1

Puedes hacerlo, por ejemplo, con un oneliner como este:

while read -r WORKSTATION; do echo "$WORKSTATION" "$(grep "$(basename "$WORKSTATION" | head -c 3)" "$TO_FILE_PATH" | cut -d' ' -f2)"; done < from_file

Su salida sería:

/Workstation/Build/red-001 /Workstation/Staff/Red
/Workstation/Build/sci-001 /Workstation/Staff/Sci
/Workstation/Build/shs-001 /Workstation/Staff/Shs

WORKSTATIONes solo un nombre para la variable que contendrá cadaruta de la estación de trabajopara cada iteración del ciclo while. TO_FILE_PATHes la ruta de este archivo:

red /Workstation/Staff/Red
sci /Workstation/Staff/Sci
shs /Workstation/Staff/Shs

y from_file, es un archivo que contiene esto:

/Workstation/Build/red-001
/Workstation/Build/sci-001
/Workstation/Build/shs-001

O puede utilizar un script bash, move_worksations.shcomo este:

FROM_FILE_PATH="$1"
TO_FILE_PATH="$2"
WORKSTATION_NUMBER=0

while read -r WORKSTATION 
do
    WORKSTATIONS["$WORKSTATION_NUMBER"]=""$WORKSTATION" "$(grep "$(basename "$WORKSTATION" | head -c 3)" "$TO_FILE_PATH" | cut -d' ' -f2)""
    ((WORKSTATION_NUMBER++))
done < "$FROM_FILE_PATH"

for WS_SOURCE_TARGET in "${WORKSTATIONS[@]}"
    do zman wmv "$WS_SOURCE_TARGET"
done

Y luego, usas move_worksations.sh, de esta manera:

./move_worksations.sh from_file to_file

Nota: recuerda dar move_worksations.shpermiso de ejecución:chmod u+x move_worksations.sh

información relacionada