이 스크립트를 사용하여 공유 디렉터리의 모든 파일을 다른 디렉터리로 전송합니다.
cd /share
while :
do
for allfiles in $(find /share/ -maxdepth 1 -type f -iname "*" -mmin +1);
do
sudo mv "$allfiles" /schoolstore/
done
sleep 15s
done
하지만 파일 이름에 공백이 포함되어 있으면 오류가 발생합니다. 모든 파일 이름에 작동하도록 스크립트를 어디에서 수정해야 합니까?
답변1
내 의견에 언급된 다른 질문을 바탕으로 내 제안은 다음과 같습니다(테스트되지 않음).
cd /share
do
for allfiles in $(find /share/ -maxdepth 1 -type f -iname "*" -mmin +1);
do
aveIFS="$IFS"; IFS=''; ls $file;
sudo mv "$allfiles" /schoolstore/
IFS="$saveIFS"
done
어떻게든 최적화할 수 있는 방법이 있을 수도 있는데, while
멈추지 않는 것 같아서 코드 일부를 삭제했습니다.
말할 필요도 없이 이러한 유형의 코드(또는 해당 문제에 대한 코드)를 실행하기 전에 모든 파일을 백업하십시오.
find
또는 $IFS를 변경하는 대신 해당 플래그가 있는 명령 하나만 변경하면 됩니다 -exec
. 내가 의미하는 바는 다음과 같습니다(다시 말하지만, 테스트되지 않음).
find /share/ -maxdepth 1 -type f -iname "*" -mmin +1 -exec mv {} /schoolstore/ \;