2011-08-08 3 views
0

1 일이 넘은 파일을 보관 디렉토리로 이동시키는 스크립트를 작성하려고합니다. 내 인수 목록이 find에서 처리하기에 너무 큰 때문에FIND 이외의 mtime 사용

for filename in `find /file_path/*.* -type f -mtime +1` 

이 실패 : 나는 다음과 같은 find 명령을 사용했다.

/usr/bin/find: arg list too long 

그것이 IF-ELSE 문에 find를 사용할 수있다 : 나는 다음과 같은 오류가있어? 누군가 mtime 이외의 다른 사용 예를 find에 제공 할 수 있습니까?

편집 : 찾기가 포함 된 for 루프를 추가합니다. 원래 코드를 가정

+0

그 뒤따라 오는 백틱은 복사 - 붙여 넣기 실수입니까? 그것이 없으면, 그것은 나를 위해 작동합니다. 또한 왜'*. * ', 그냥 *를 사용하십시오. – tjameson

+0

find는 for 루프의 일부입니다. 질문을 편집했습니다. – visakh

+0

@tjameson : 점을 포함하지 않는 이름을 피하려면''*. *' '을 사용하십시오. –

답변

2
find /file_path -name '*.*' -mtime +1 -type f | 
while read filename 
do ...move operation... 
done 

은 파일 이름, 에 등 공간을 처리하고 find의 작용에서 이동을 할 합리적인 방법이 없다하는 방식 허용했다. 또한 인수 목록이 오래 걸리는 문제를 방지합니다.

+0

+1. 나는 그것을 어디에서나 사용할 수있다. – tjameson

+0

답장을 주셔서 감사합니다. ..it는 긴 목록 오류 목록을 제공하지 않습니다 ...하지만 하위 디렉토리의 모든 파일을 읽는 것 같습니다 .my file_path는/jobs/20110808/logs이지만 작업/20110807, jobs/20110809 등. 깊이도 추가해야합니까? – visakh

+0

@ user295338 : 검색을 원한다면'/ jobs/20110808/logs'를 지정하십시오. '찾기 '는 당신이보기를 요구하는 곳 아래를 본다. –

2

검색의 -exec 부분을 사용하지 않는 이유는 무엇입니까? 그냥 파일을 cp를하려면

1

, 당신은 사용할 수

찾기/FILE_PATH -name -mtime +1 타입 F "."| xargs -i mv {}/usr/local/archived

관련 문제