Skript zum Generieren von Befehlen zum Verschieben von Workstations von einem ZMAN-Ordner in einen anderen

Skript zum Generieren von Befehlen zum Verschieben von Workstations von einem ZMAN-Ordner in einen anderen

Ich führe auf dem Server einen Befehl aus, der die Arbeitsstationen in einem Ordner auflistet.

Basierend auf den ersten drei Zeichen des Arbeitsstationsnamens möchte ich die Arbeitsstation vom aktuellen Ordner in einen neuen Ordner verschieben.

Der Befehl zman wl /Workstation/Buildwürde also die Arbeitsstationen im Build-Ordner wie folgt auflisten.

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

Jetzt habe ich eine Definitionsdatei, die mir anhand der ersten drei Zeichen des Arbeitsstationsnamens sagt, wohin ich die Arbeitsstation verschieben soll.

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

Ich bin also auf der Suche nach einem Skript oder Befehl, der die Arbeitsstationen im Ordner „Von“ auflistet und dann die ersten drei Zeichen des Arbeitsstationsnamens in der Definitionsdatei nachschlägt, um den Ordner „An“ zu finden und die Arbeitsstation dorthin zu verschieben.

Der Verschiebebefehl wäre:

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

Antwort1

Das geht zum Beispiel mit einem Oneliner wie diesem:

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

Die Ausgabe wäre:

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

WORKSTATIONist nur ein Name für die Variable, die jedesArbeitsstationspfadfür jede Iteration der While-Schleife. TO_FILE_PATHist der Pfad dieser Datei:

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

und from_fileist eine Datei, die Folgendes enthält:

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

Sie können auch ein Bash-Skript move_worksations.shwie dieses verwenden:

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

Und dann verwenden Sie move_worksations.shfolgendermaßen:

./move_worksations.sh from_file to_file

Hinweis: Denken Sie daran, move_worksations.shdie Ausführungsberechtigung zu erteilen:chmod u+x move_worksations.sh

verwandte Informationen