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