30일이 지난 폴더를 다른 폴더로 이동

30일이 지난 폴더를 다른 폴더로 이동

각 폴더에 1000개의 이미지가 포함된 일일 폴더가 포함된 디렉토리가 있습니다. 30일이 지난 폴더를 보관 폴더에 보관하고 싶습니다.

나는 이것을 시도했지만 모든 것이 엉망이 되어 모든 이미지 파일을 날짜 폴더 대신 보관 폴더에 복사했습니다.

sudo find /home/lanein1/AshtonRPOUT/ -type f -mtime +30 -exec mv '{}' /home/lanein1/AshtonRPOUT/Arch/ \;

여기에 이미지 설명을 입력하세요. 내 스크립트는 모든 이미지를 별도의 폴더 대신 아치에 복사합니다.

여기에 이미지 설명을 입력하세요.

답변1

디렉토리를 찾고 싶지만 일반 파일( f)을 찾고 있습니다. d디렉토리 검색 의 경우 :

sudo find /home/lanein1/AshtonRPOUT/ -type d -mtime +30 -exec mv '{}' /home/lanein1/AshtonRPOUT/Arch/ \;

답변2

지난 30일 동안 수정된 모든 디렉터리를 이동하고 /home/lanein1/AshtonRPOUT/최상위 디렉터리( /home/lanein1/AshtonRPOUT/)는 변경하지 않으려면 다음을 사용하세요.

find /home/lanein1/AshtonRPOUT/ -mindepth 1 -maxdepth 1 -type d \
    ! -path '/home/lanein1/AshtonRPOUT/Arch*' -mtime +30 \
    -exec mv {} /home/lanein1/AshtonRPOUT/Arch/ ';' -prune

여기서 주의할 점:

  • 파일이 아닌 디렉토리를 찾고 있으므로 -type d.

  • 대상 디렉터리는 검색된 디렉터리 집합에 포함되므로 해당 경로를 피하기 위해 find사용합니다 .! -path '...'

  • 최상위 디렉토리를 이동하고 싶지 않으므로 -mindepth 1start find를 추가합니다.아래에그 길. 또한 하위 폴더에 들어가지 않도록 -maxdepth 1강제하세요 find(하위 폴더가 있고 여기에는 파일만 포함되어 있다고 말씀하셨습니다).

  • (여기에서는 사용하기 때문에 필요하지 않습니다 -maxdepth 1만...) 디렉터리를 이동하면 디렉터리 구조가 변경됩니다. 그래서 -prune마지막에 추가합니다. 이렇게 하면 고려될 디렉토리 목록에서 이동된 경로가 제거됩니다 find. 이것이 없으면 find존재하지 않는 디렉토리에 들어가려고 시도합니다(디렉토리를 찾아서 이동한 경우).

관련 정보