2012-12-20 4 views
0

저는 bash 스크립트를 처음 사용하며 스크립트에 정의 된 일별로 소스와 대상 사이의 며칠 이전 파일을 이동시키는 bash 스크립트를 작성하려고합니다.bash 스크립트가 필요한 출력을 얻지 못했습니다.

#!/bin/bash 

echo "Enter Your Source Directory" 
read soure 

echo "Enter Your Destination Directory" 
read destination 

echo "Enter Days" 
read days 

find $soure -mtime -$days -exec mv {} $destination \; 
echo "Files which were $days Days old moved from $soure to $destination" 

내 스크립트 오류없이 실행,하지만 난 출력을 요구 받고 있지 않다. 30 일 동안/home/ketan/maxi 폴더의/home/ketan/google 폴더로 이동하면 파일이 아닌 google 전체 maxi 폴더로 이동합니다.

스크립트별로 연령 기준을 만족하는 파일을 이동할 수 있어야합니다. 이 스크립트의 문제점은 무엇입니까?

+0

디버깅 팁을 이동하고 보장 : find' 제대로 파일을 나열한다'하면'간부 제거 확인하려면 ...'. 이것이 맞으면 mv에'-v' 옵션을 넣으십시오. – anishsane

답변

0

파일 이름에 공백이 포함되어있을 수 있으므로 mv 명령이 잘못됩니다. 대신이 방법을 사용해보십시오.

find $soure -mtime -$days -exec mv "{}" $destination \; 

좀 더 조언은 탭 완성과 함께 사용하기 쉬운이기 때문에, 식별자 $1, $2$3 대신이 read 대안을 사용할 수 있습니다.

+0

틀린데,'find'의'{}'는 파일 이름의 모든 특수 문자를 아무런 문제없이 처리합니다. 사실, bash의 확장 시간에''{} ''는'{}'(큰 따옴표 제외)로 확장되고 큰 따옴표없이'찾기'로 보내지기 때문에''찾기 ''로 볼 수 없을 것입니다 (당신은 정말로 여기에 확장을 혼란스럽게합니다). –

+0

동일한 결과가 없습니다. –

0

추가 -type f 경우에만 파일이 아닌 디렉토리

find "$shore" -type f -mtime -$days -exec mv "{}" "$destination" \; 
관련 문제