ワークステーションをある zman フォルダーから別のフォルダーに移動するためのコマンドを生成するスクリプト

ワークステーションをある zman フォルダーから別のフォルダーに移動するためのコマンドを生成するスクリプト

サーバー上でフォルダー内のワークステーションを一覧表示するコマンドを実行します。

ワークステーション名の最初の 3 文字に基づいて、ワークステーションを現在のフォルダーから新しいフォルダーに移動します。

したがって、コマンド: は、zman wl /Workstation/Build次のように Build フォルダー内のワークステーションを一覧表示します。

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

これで、ワークステーション名の最初の 3 文字に基づいてワークステーションをどこに移動するかを示す定義ファイルができました。

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

そこで、私は「from」フォルダーにワークステーションをリストし、定義ファイルでワークステーション名の最初の 3 文字を検索して「to」フォルダーを取得し、そこにワークステーションを移動するスクリプトまたはコマンドを探しています。

移動コマンドは次のようになります。

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

答え1

たとえば、次のようなワンライナーでそれを実行できます。

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

出力は次のようになります。

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

WORKSTATIONは、各データを保持する変数の名前です。ワークステーションパスwhile ループの各反復で、TO_FILE_PATHこのファイルのパスは次のようになります。

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

そしてfrom_file、これは次の内容を含むファイルです:

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

move_worksations.shまたは、次のようなbash スクリプトを使用することもできます。

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

そして、 をmove_worksations.sh次のように使用します。

./move_worksations.sh from_file to_file

注意:move_worksations.sh実行権限を与えることを忘れないでください:chmod u+x move_worksations.sh

関連情報