스크립트에서 여러 mv 명령이 어떻게 작동하는지 알아내려고 합니다. 로그, 결과 및 tmp 폴더가 포함된 폴더가 있습니다. 이것은 또한 내가 다음을 사용하여 쉘 스크립트(make_move.csh)를 작성한 곳이기도 합니다.
#!/bin/csh -f
set DN=$1
#mkdir FOLDER1/$DN
mv ./log ./FOLDER1/$DN
mv ./result ./FOLDER1/$DN
mv ./tmp ./FOLDER1/$DN
이 스크립트를 실행하면
csh make_move.csh 50_1000error
"log"의 내용이 FOLDER1/50_1000error에 복사되고, result 폴더와 tmp 폴더 전체가 복사되는 것을 볼 수 있습니다. FOLDER1/50_1000error에는 2개가 아닌 3개의 폴더가 있고 1개의 폴더에 콘텐츠가 있도록 하는 것이 목적입니다.
내가 무엇을 놓치고 있는지, 왜 첫 번째 mv 명령이 두 번째 및 세 번째 명령과 다르게 작동하는지 잘 모르겠습니다.
답변1
빈 디렉토리의 경우 모호함을 피하기 위해 mv에게 내용을 대상 디렉토리로 이동하도록 명시적으로 지시할 수 있습니다. 또한 필요한 모든 디렉터리를 재귀적으로 생성해야 합니다.
#!/bin/bash
mkdir -p FOLDER1/$1
mv -t ./FOLDER1/$1/ ./a
mv -t ./FOLDER1/$1/ ./b
mv -t ./FOLDER1/$1/ ./c
올바르게 변환됩니다
1& [planetmaker:~/test] $ ls
a b c script.sh
도착하다
1& [planetmaker:~/test] $ ./scritp.sh blubber
1& [planetmaker:~/test] $ ls
FOLDER1 script.sh
1& [planetmaker:~/test] $ ls FOLDER1/blubber
a b c
(a, b, c는 여기서 디렉토리입니다)