답변:
당신은 거의 옳습니다. -mtime 365
정확히 365 일이 지난 모든 파일이됩니다. 365 일 이상인 것을 원합니다 . +
이렇게 하면 앞에 숫자를 추가 해야합니다 -mtime +365
.
-maxdepth 1
하위 디렉토리에서 항목을 이동하지 못하게 하는 플래그에 관심이있을 수도 있습니다 .
디렉토리가 아닌 파일 만 이동하고 있는지 확인 -type f
하려면 행에 추가 하십시오.
줄의 끝에 우리 는 그것이 우리가 실행하는 명령의 끝임을 알 수 \;
있도록 추가 find
합니다.
따라서 줄은 다음과 같아야합니다.
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec mv "{}" /destination/directory/ \;
안전한 측면을 유지하려면 먼저 mv 대신 ls -l을 수행하여 시작하십시오. 이렇게하면 다음과 같이 mv로 다시 실행하기 전에 원하는 파일을 정확하게 얻는 지 미리 확인할 수 있습니다.
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec ls -l {} \;
exec
문장 의 끝을 의미합니다 . 에 대한 매뉴얼 페이지를 참조하십시오 find
.
위의 솔루션을 사용할 때주의하십시오.이 솔루션을 사용하여 모든 하위 폴더의 모든 파일을 이동하게되었습니다 !!!!
이 명령은 / source 디렉토리의 모든 파일과 소스 디렉토리의 모든 하위 폴더를 이동합니다.
find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;
대신 / sourcedirectory의 파일에만 -maxdepth 1 옵션을 사용하십시오.
find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
-type f
. 하위 폴더가 이동되었지만 해당 폴더의 내용이 하위 폴더로 이동하지 않고 하위 폴더에 남아 있음을 의미한다는 의미입니까?
$ find /sourcedirectory/ -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
find: missing argument to `-exec'
올바른 슬래시를 제거합니다. /sourcedirectory/
$ find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
find: missing argument
오류 를 복제 할 수 없었지만 후행 슬래시를 삭제하는 /sourcedirectory
것이 정확 하다는 데 동의 합니다.
mtime
입니다 수정 시간 (이 아마 당신은 원하는 것을 같은 소리 - 그것은 대부분의 시간). 이러한 로그를 읽거나 자주 참조하는 경우-atime
(마지막 액세스 시간) 사용할 수 있습니다 .