2012-03-23 2 views
0

디렉토리 및 하위 디렉토리에서 파일을 검색하고 계산하는 것과 관련하여 한 가지 질문이 있습니다. 나는 이런 식으로하려고 시도했다.디렉토리 및 하위 디렉토리의 파일 검색 및 계산 [BASH]

for i in $(find $TEST_DIR -type d | wc -l); do 
     for j in $(find $i -type f | wc -l); do 
      FILES=$[FILES+j] 
     done  
     DIRS=$[DIRS+i] 
    done 

그러나 작동하지 않는다. 난 그냥 for...loop 그래서, 파일 및 디렉토리 (하위 디렉토리) 당신의 도움 :)

+0

그러나 나는 모든 디렉토리에 내가 찾아야 할 경우 '재귀 적 원인을 찾을 필요 (경고 메시지를 쓰지 않아도되는 경우) – nikigx2

답변

3

find 명령은 재귀 적으로 모든 파일/DIRS를 찾을 수에 대한 감사의 양을 비교해야 그 후 모든 디렉토리 및 하위 디렉토리에있는 파일을 계산해야 필요하지 않은 것은 : 당신의 이름의 5 월 newline이 포함 된 경우

FILES=$(find $TEST_DIR -type f | wc -l) 
DIRS=$(find $TEST_DIR -type d | wc -l) 

,이 시도 :

FILES=$(find $TEST_DIR -type f -printf x | wc -c) 
+0

이것은 100 % 정확하지는 않지만 (분명히 대부분의 경우에 효과적 일 것입니다.) 파일 이름에 줄 바꿈 문자 (UNIX에서 허용됨)가 포함되어있는 경우, , 그것은 실패 할 것이다. GNU find에서 더 잘 작동 할 것입니다 : find $ TEST_DIR "-type f -printf"1 \ n "| wc -l' –

+0

개행 문자의 대안 :'find "$ TEST_DIR"-type f -print0 | xargs -0 wc -l' –

관련 문제