cron
특정 디렉터리에서 작업으로 실행 되는 "게이트키퍼" 스크립트를 작성하려고 합니다 . 이름에 생성 날짜가 포함된 보관 폴더를 생성한 다음 특정 유형의 모든 파일을 찾아 이 새 폴더로 이동해야 합니다.
이것은 내 테스트 코드입니다.
#!/bin/bash
today=$(date +'%m:%d:%Y')
target="Archived-$today"
mkdir -p $target
find . -type f -name "*.zip" -exec mv -i {} /$target \;
폴더를 올바르게 생성했지만 발견된 파일을 폴더로 이동할 수는 없습니다. 그냥 작은 테스트로 이 작업을 수행했는데 스크립트와 파일이 모두 동일한 사용자에 의해 생성되었습니다. 처음에 추가하면 sudo
파일을 이동하려고 시도하지만 현재 디렉터리에서만 파일을 제거하고 새로 생성된 디렉터리에는 넣지 않습니다.
.zip 파일을 이동하고 싶지 않습니다. 단지 예입니다.
chmod 777
파일과 폴더를 모두 사용해 보았습니다 . 같은 일이 일어납니다.
저는 우분투 14.04 LTS를 실행하고 있습니다.
더 좋은 방법이 있으면 알려주세요.
올바른 방향에 대한 조언을 주시면 감사하겠습니다.
편집하다
이제 괜찮아.
나는 find
성명을 다음과 같이 업데이트했습니다.
find . -maxdepth 1 -type f -name "*.zip" -exec mv -t "$target/" {} \;
답변1
하위 디렉터리 대신 현재 디렉터리에서 파일을 찾습니다.
find . -maxdepth 1 -type f -name '*.zip' -exec mv -t "$target/" {} \;
디렉토리를 제외하는 방법:
find . -type f -not -path "$target/*" -name '*.zip' -exec mv -t "$target/" {} \;
이는 오늘의 아카이브만 제외된다는 점에 유의하세요. 다른 아카이브도 있을 수 있지만 첫 번째 명령을 사용하거나 홈 디렉터리 외부에 아카이브 디렉터리를 생성하는 것이 좋습니다!