태그 보관물: unix

unix

날짜보다 오래된 다른 디렉토리로 파일 이동 가득 차서 제거 할 수

오늘부터 오래된 파일을 이동하는 솔루션을 찾고 있습니다. 로그 파티션이 가득 차서 제거 할 수 없습니다. 그들은 오랫동안 필요합니다. 어쨌든 내가 생각해 낸 한 가지 해결책은 다음과 같습니다.

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/ \;


답변