bash는 파일 및 디렉터리 수를 계산하고 크기를 요약하며 퓨즈|sshfs 폴더를 제외합니다.

bash는 파일 및 디렉터리 수를 계산하고 크기를 요약하며 퓨즈|sshfs 폴더를 제외합니다.

Linux 시스템(Debian)에서 지정된 디렉터리의 파일과 폴더 수를 계산하려면 bash 스크립트의 도움이 필요하지만 지정된 폴더를 제외하고 싶습니다.

workdir다른 스크립트 파일과 폴더의 이름을 딴 홈 디렉터리가 있습니다. 내부에는 workdir이라는 디렉토리가 있습니다 mysshfs. 나는 퓨즈/sshfs를 사용하여 폴더 내에 외부 폴더를 마운트합니다 mysshfs.

이제 파일/디렉터리 수와 파일/디렉터리 크기에 대한 정보를 얻기 위해 몇 가지 명령을 실행하지만 directoy 를 제외하고 싶습니다 mysshfs.

내 bash 명령이 작동합니다.

  1. workdir전체 크기 보기 |퓨즈/sshfs가 사용되지 않음

    $ du -hs workdir
    
  2. |를 workdir제외하고 전체 크기를 가져옵니다 .mysshfs퓨즈/sshfs 사용 중

    $ du -hs --exclude=mysshf workdir
    
  3. workdir|에 있는 파일 수를 계산합니다.퓨즈/sshfs가 사용되지 않음

    $ find workdir -type f | wc -l
    
  4. workdir|의 폴더 수를 계산합니다.퓨즈/sshfs가 사용되지 않음

    $ find workdir -type d | wc -l
    
  5. workdir제외하고 계산 중인 파일 수 mysshfs|퓨즈/sshfs가 사용되지 않음

    $ find workdir -type f -not -path "*mysshfs*" | wc -l
    
  6. 계산의 폴더 workdir(제외 mysshfs) |퓨즈/sshfs가 사용되지 않음

    $ find workdir -type d -not -path "*mysshfs*" | wc -l
    

명령을 사용할 때5 & ​​​​6그리고 원격 디렉터리가 mysshfs해당 디렉터리 아래에 마운트되고 명령이 중단됩니다.

명령은 결국 작동하여 올바른 출력을 표시하지만, 그렇지 않아야 함에도 불구하고 명령이 여전히 제외된 디렉터리를 찾고 있는 것처럼 보이므로 결과를 표시하는 데 시간이 오래 걸립니다.

내 실수는 어디에 있습니까? 아니면 명령 5와 6에서 뭔가를 잊어버린 것입니까? 아니면 결과를 얻는 데 사용할 수 있는 다른 명령이 있습니까?

빠른 결과를 얻으려면 2개의 별도 명령을 사용하여 파일과 디렉터리의 수를 계산하고 fusion/sshfs를 통해 마운트된 지정된 폴더를 제외해야 합니다.

답변1

를 사용하면 하위 디렉터리로 내려가는 것을 피할 수 있습니다 -prune. 다음 명령을 시도해 보십시오:

find workdir -path "*/mysshfs/*" -prune -o \( -type f -print \) | wc -l
find workdir -path "*/mysshfs/*" -prune \( -type d -print \)  | wc -l

답변2

fuse.sshfsFS 유형의 파일을 건너뛰려면 다음을 사용하십시오.

find workdir//. -fstype fuse.sshfs -prune -o -type f -print | grep -c //

또는 -xdev다른 파일 시스템(모든 유형)으로 이동하지 마십시오.

wc -l개행 문자는 파일 형식의 모든 문자만큼 유효하므로 어떠한 경우에도 이를 사용하여 파일 개수를 계산할 수 없습니다 . 여기서는 //단 한 번만 발생하도록 보장되는 발생 횟수를 계산합니다 . 하지만 GNU를 사용하면 find이 작업도 수행할 수 있습니다.

find workdir -fstype fuse.sshfs -prune -o -type f -printf . | wc -c

또는 유형별 파일 수에 대한 분석을 얻습니다( f예:정기적인, d디렉토리, l심볼릭 링크, p명명된 파이프 등):

find workdir -fstype fuse.sshfs -prune -o -type f -printf '%y\n' |
  sort |
  uniq -c

관련 정보