2012-04-08 2 views
0

내가없는 경우 디렉토리의 순차 파일 목록에서 파일을 이동시키는 간단한 스크립트를 작성하려고합니다. 예를 들어 "1", "2", "3", "5"등의 파일이있는 디렉토리가있는 경우 "3"을 "4", "3"을 "2"등으로 이동하려고합니다. 아래 코드는 다음과 같습니다. Upper와 Lower는 내가 이동하고자하는 값에 해당합니다. 위의 예를 사용하여, LOWER 1이 될 것이며, UPPER 5.mv가이 bash 스크립트에서 작동하는 이유는 무엇입니까?

for z in $(eval echo {$UPPER..$LOWER}) ; do   
     checkfile $DIRNAME $z #Returns -1 on file missing 
     if [[ $? -ne 0 ]]; then 
      echo "Found bad match" 
      for y in $(eval echo {$z..$LOWER}) ; do 
       n=$(($y - 1)) 
       echo "$y $n" 
       mv "$n" "$y" 
      done 
      exit 0 
     fi 
done 

것 나는 MV 불평 왜 아주 확실하지 않다 다음과 같은 출력

Found bad match 
18 17 
mv: cannot stat `17': No such file or directory 
17 16 
mv: cannot stat `16': No such file or directory 
16 15 
mv: cannot stat `15': No such file or directory 
15 14 
mv: cannot stat `14': No such file or directory 

를받을 수 있습니다. 어떤 아이디어라도 높이 평가할 것입니다!

+1

명령을 디버깅하려면'mv' 앞에 "echo"라는 단어를 추가하십시오. 또는 스크립트 맨 위에'set -x'를 추가하십시오. – alexis

답변

1

사용자의 mv 명령이 로컬 디렉토리의 파일을 이동하려고하지만 확인중인 파일은 다른 곳 ($DIRNAME)에 있습니다. 아마도 mv "$DIRNAME/$n" "$DIRNAME/$y"을 시도해보십시오.

+0

나는 바보 야. 그 점을 지적 해 주셔서 감사합니다! – thomascirca

관련 문제