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

ある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

たとえば、次のようにonelinerを使用してこれを実行できます。

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

おすすめ記事