오늘부터 오래된 파일을 이동하는 솔루션을 찾고 있습니다. 로그 파티션이 가득 차서 제거 할 수 없습니다. 그들은 오랫동안 필요합니다. 어쨌든 내가 생각해 낸 한 가지 해결책은 다음과 같습니다.
find /sourcedirectory -mtime 365 -exec mv "{}" /destination/directory/ \;
이게 효과가 있을까요? ” -mtime 365 “로 인해 현재보다 오래된 파일이 새 위치로 이동됩니까?
고맙습니다!
답변
당신은 거의 옳습니다. -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 {} \;
답변
위의 솔루션을 사용할 때주의하십시오.이 솔루션을 사용하여 모든 하위 폴더의 모든 파일을 이동하게되었습니다 !!!!
이 명령은 / source 디렉토리의 모든 파일과 소스 디렉토리의 모든 하위 폴더를 이동합니다.
find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;
대신 / sourcedirectory의 파일에만 -maxdepth 1 옵션을 사용하십시오.
find /sourcedirectory -maxdepth 1 -mtime +365 -exec mv "{}" /destination/directory/ \;
답변
이 명령을 사용하고 디렉토리가 아닌 파일 만 찾도록 지정하고 파일이 1 년보다 오래되었음을 지정하십시오.
find /sourcedirectory -type f -mtime +365 -exec mv "{}" /destination/directory/ \;
답변
파일에 자주 액세스하는 경우 atime과 함께 아래 명령을 사용할 수 있습니다
find /sourcedirectory -type f -atime +365 -exec mv -t /destinationdirectory {} +;
답변
$ 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/ \;