한 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

관련 정보