フォルダのワークステーションを一覧表示するコマンドをサーバー上で実行しています。
ワークステーション名の最初の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