명령을 생성하고 워크스테이션을 하나의 zman 폴더에서 다른 폴더로 이동하는 스크립트

명령을 생성하고 워크스테이션을 하나의 zman 폴더에서 다른 폴더로 이동하는 스크립트

폴더의 워크스테이션을 나열하는 서버에서 명령을 실행합니다.

워크스테이션 이름의 첫 번째 3자를 기준으로 워크스테이션을 현재 폴더에서 새 폴더로 이동하고 싶습니다.

따라서 다음 명령은 zman wl /Workstation/BuildBuild 폴더의 워크스테이션을 다음과 같이 나열합니다.

/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

관련 정보