폴더의 워크스테이션을 나열하는 서버에서 명령을 실행합니다.
워크스테이션 이름의 첫 번째 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