특정 날짜(예: 7일) 이후에 수정된 파일을 다른 디렉터리로 어떻게 이동합니까? 서투르게 출력을 보내보았습니다
ls -t | head -n XX
하지만 최근에 ls를 구문 분석하는 것이 좋은 생각이 아니라는 것을 알게 되었습니다.
답변1
당신 말이 맞아요. 구문 분석을 피하는 것이 가장 좋습니다 ls
. 이에 비해 아래 솔루션은 find
가장 어려운 파일 이름도 처리할 수 있습니다.
7일 이내에 수정된 현재 디렉토리의 모든 파일을 이동하려면 /destination/path
다음을 사용하십시오.
find . -mindepth 1 -maxdepth 1 -mtime -7 -exec mv -t /destination/path {} +
어떻게 작동하나요?
find . -mindepth 1 -maxdepth 1
현재 디렉터리에 속한 파일을 찾습니다(현재 디렉터리 자체는 검색하지 않음).
-mtime -7
이는
find
파일만 선택하라는 메시지입니다.미만칠일.-exec mv -t /destination/path {} +
이는
find
실행mv
명령에 해당 파일을/destination/path
.이는 많은 파일 이름이
find
대체되므로 생성해야 하는 프로세스 수가 적기 때문에 효율적입니다 .{} +
mv
모든 버전이
mv
이-t
옵션을 지원하는 것은 아닙니다. GNUmv
(리눅스)는 그렇습니다.