하나의 특정 디렉토리에서 작업 으로 실행되는 "관리인" 스크립트를 작성하려고 합니다 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/" {} \;
다른 아카이브가 있는 동안 이는 오늘의 아카이브만 제외된다는 점에 유의하세요. 첫 번째 명령을 권장하거나 기본 디렉토리 외부에 아카이브 디렉터리를 생성하세요!