2013-06-06 4 views
0

처리 및 삭제 용으로 표시된 파일 이름을 가진 디렉토리로 작업하고 있습니다. 필자가해야 할 일은 모든 파일의 이름을 가져 와서 배열에 넣은 다음 배열을 통해 작업을 수행하는 것입니다. 문제는 KSH88이 최대 1024 개의 배열 만 처리하고 디렉토리에 파일 이름이 더 많을 수 있다는 것입니다.KSH88의 긴 목록 작업

난 그냥 통해 반복하고 다른 모든 용이하고 같은 디렉토리에있는 총 전류 파일 이름을 얻을 수 있어야합니다, 스크립트의 현재 부분은 다음과 같습니다

#This is getting the result set and attempting to get the total file names as initalNumber. 
    integer initialNumber=${#`find $source -path "$source/*" -prune -type f -name "$regex" | sed 's!.*/!!'`[@]} 

이 나을주고있다 현재 "잘못된 대체 오류"입니다. KSH88로 작업 한 것은 이번이 처음이므로 배열로 결과 세트를 사용하는 것이 가능한지 확실하지 않습니다. 도움이 될 것입니다, 감사합니다.

답변

1

그런 복잡한 접근법없이 파일 수를 얻을 수 없습니까? 예 :

integer initialNumber=$(ls -l | grep -v ^d | wc -l) 

다른 용도로 어레이를 사용하고 있습니까? 파일 목록을 반복하는 더 좋은 방법이 있습니다. 현재 디렉토리의 파일 목록을 반복하려면이 작업을보다 직접적으로 쉽게 수행 할 수 있습니다.

cd $dirname; 
for filename in ABC*DEF??.gz; do 
    # some action here... 
done 
+0

제 동료는 이전에 해결책을 생각해 냈습니다. 배열을 사용하지 않고 각 파일 이름을 검색 할 때 루프를 반복했습니다. 따라서 제안 된 수정 사항과 매우 유사합니다. 감사! – user1799107