find를 사용하여 디렉토리의 모든 파일을 나열하십시오.

find를 사용하여 디렉토리의 모든 파일을 나열하십시오.

한 줄 명령을 사용하여 지정된 각 디렉터리(또는 하위 디렉터리)를 찾은 bin다음 그 아래에 있는 모든 파일의 목록을 인쇄하려고 합니다. 하지만 그 아래에 있는 디렉터리 이름도 인쇄하지 않습니다.

이를 달성하기 위해 몇 가지 다른 방법을 시도했지만 지금까지 아무 것도 효과가 없었습니다.

  1. find ~ -type d -name "bin" -exec ls '{}' ';' | grep -v /

이것을 테스트했는데 파일이 나열되었지만 bin 아래의 모든 디렉터리도 나열되었습니다. 따라서 내 디렉토리 아래에 다음과 같은 하위 디렉토리가 있는 경우 bin:bin

~/home/
   ~/home/bin
      file1.txt
      ~/home/bin/bin
         file2.txt

출력은 다음과 같습니다.

bin
file1.txt
file2.txt
  1. find ~ -type d -name "bin" -exec ls -f '{}' ';'

ls -f이렇게 하면 파일만 나열된다는 내용을 읽었지만 불행하게도 디렉토리 도 나열됩니다 bin....

그럼 어떻게 해야 하나요?

답변1

을 사용하려면 -path다음을 시도해 보세요.

find ~ -path '*/bin/*' -type f

이것은 자체적으로 나열되지 않으므로 bin두 가지를 모두 얻으려면 다음을 수행하십시오.

find ~ \( -path '*/bin/*' -type f \) -o \( -name bin -type d \)

답변2

find호출을 중첩하면 이 작업을 수행 할 수 있습니다 .

$ find ~ -type d -name bin -exec find '{}' -type f ';'

한 번의 호출을 대체하므로 ls두 번째 호출 find에서 두 개 이상의 목록 나열을 원하지 않을 수도 있습니다. 이 경우 위의 . -maxdepth 1뒤에 추가하세요 -type f.

답변3

find ~ -type f -size +10M -exec du -sh {} + | sort -rh
  • find ~:파일을 검색할 디렉터리를 지정합니다( ~이 예에서는).
  • -type f: 이렇게 하면 디렉터리가 아닌 일반 파일만 고려됩니다.
  • -size +10M:검색할 파일의 최소 크기를 지정합니다(이 경우 10MB 이상).
  • -exec du -sh {} +du -sh: 발견된 각 파일의 크기를 가져오는 명령을 실행합니다 . 명령이 끝나면 +여러 파일이 한 번에 전달되어 호출 횟수가 줄어들고 성능이 향상됩니다.dudu
  • sort -rh: 출력을 사람이 읽을 수 있는 형식( -h) 및 역순( -r)으로 크기별로 정렬하므로 가장 큰 파일이 맨 위에 표시됩니다.

관련 정보