script para gerar comandos, mover a estação de trabalho de uma pasta zman para outra

script para gerar comandos, mover a estação de trabalho de uma pasta zman para outra

Eu executo um comando no servidor que lista as estações de trabalho em uma pasta.

com base nos três primeiros caracteres do nome da estação de trabalho, desejo mover a estação de trabalho da pasta atual para uma nova pasta.

então o comando: zman wl /Workstation/Buildlistaria as estações de trabalho na pasta Build da seguinte maneira.

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

Agora eu tenho um arquivo de definições que me diz para onde mover a estação de trabalho com base nos primeiros três caracteres do nome da estação de trabalho.

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

Então, estou procurando um script ou comando que liste a estação de trabalho na pasta "de" e, em seguida, procure os três primeiros caracteres do nome da estação de trabalho no arquivo de definições para obter a pasta "para" e mover a estação de trabalho para lá.

O comando de movimento seria.

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

Responder1

Você pode fazer isso, por exemplo, com um 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

Sua saída seria:

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

WORKSTATIONé apenas um nome para a variável que conterá cadacaminho da estação de trabalhopara cada iteração do loop while. TO_FILE_PATHé o caminho deste arquivo:

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

e from_file, é um arquivo que contém isto:

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

Ou você pode usar um 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

E então, você usa move_worksations.sh, desta forma:

./move_worksations.sh from_file to_file

Nota: lembre-se de dar move_worksations.shpermissão de execução:chmod u+x move_worksations.sh

informação relacionada