또 다른 답변으로 이미 -exec
은 find
에 대한 작업이므로 쉘 명령으로 사용할 수 없습니다. 반대로 xargs
과 grep
은 명령이므로 find
내부에 파이프 |
을 사용할 수없는 것처럼 그걸 find
동작으로 사용할 수 없습니다.
하지만 더 중요한 것은, 당신이 find
의 결과에 ls
및 grep
를 사용할 수에도 불구하고 단지 시간의 일부 금액보다 오래된 파일을 이동, 당신은 안된다. 이러한 파이프 라인은 깨지기 쉽고 심볼릭 링크, 개행 문자가있는 파일 등 많은 경우에 실패합니다.
대신 find
을 사용하십시오. 당신은 아주 강력하다는 것을 알게 될 것입니다.
find -name 'fsimage*' -mtime +7 -exec mv '{}' /some/dir/ \;
mv
에 파일 modified on a specific/reference date, 예를 들면 : 7 일 이상 전에 수정 예를 들어
,
mv
에 파일은
-mtime
test를 사용
2017-10-20
, 당신은
-newerXY
test 사용할 수 있습니다 : 당신의
mv
가 지원하는 경우, 또한
find -name 'fsimage*' -newermt 2017-10-20 ! -newermt 2017-10-21 -exec mv '{}' /some/dir/ \;
을 -t
옵션 (처음 이후 여러 파일을 대상 디렉토리를 제공하기 위해), 당신은 총을 줄이고, 여러 파일에 대한 find
에 {} +
자리를 사용할 수 있습니다 mv
명령 호출 수 (감사 @CharlesDuffy) :
find -name 'fsimage*' -mtime +7 -exec mv -t /some/dir/ '{}' +
스택 오버플로는 프로그래밍 및 개발 관련 질문에 대한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww