x바이트보다 크거나 작은 파일을 어떻게 찾을 수 있나요?

x바이트보다 크거나 작은 파일을 어떻게 찾을 수 있나요?

터미널에서 x바이트보다 크거나 작은 파일을 어떻게 찾을 수 있나요?

나는 다음과 같은 일을 할 수 있을 것 같아요

find . -exec ls -l {} \;

그런 다음 결과를 다음으로 파이프합니다.awk파일 크기별로 필터링합니다. 하지만 이보다 더 쉬운 방법은 없을까요?

답변1

사용:

find . -type f -size +4096c

4096바이트보다 큰 파일을 찾으려면

그리고 :

find . -type f -size -4096c

4096바이트보다 작은 파일을 찾으려면

크기 전환 후 + 및 - 차이를 확인하세요.

스위치 -size는 다음과 같이 설명했습니다.

-size n[cwbkMG]

    File uses n units of space. The following suffixes can be used:

    `b'    for 512-byte blocks (this is the default if no suffix  is
                                used)

    `c'    for bytes

    `w'    for two-byte words

    `k'    for Kilobytes       (units of 1024 bytes)

    `M'    for Megabytes    (units of 1048576 bytes)

    `G'    for Gigabytes (units of 1073741824 bytes)

    The size does not count indirect blocks, but it does count
    blocks in sparse files that are not actually allocated. Bear in
    mind that the `%k' and `%b' format specifiers of -printf handle
    sparse files differently. The `b' suffix always denotes
    512-byte blocks and never 1 Kilobyte blocks, which is different
    to the behaviour of -ls.

답변2

findAWK에 연결하지 않고 단독으로 유용할 수도 있다고 생각합니다 . 예를 들어,

find ~ -type f -size +2k  -exec ls -sh {} \;

물결표는 검색을 시작할 위치를 나타내며 결과에는 2KB보다 큰 파일만 표시됩니다.

멋지게 만들기 위해 -exec옵션을 사용하여 이러한 디렉터리를 크기와 함께 나열하는 또 다른 명령을 실행할 수 있습니다.

자세한 내용은 다음을 읽어보세요.매뉴얼 페이지find.

답변3

AWK는 이런 종류의 작업에 정말 쉽습니다. 질문하신 대로 파일 크기 확인과 관련하여 수행할 수 있는 작업은 다음과 같습니다.

200바이트보다 큰 파일을 나열합니다.

ls -l | awk '{if ($5 > 200) print $8}'

200바이트 미만의 파일을 나열하고 해당 목록을 파일에 씁니다.

ls -l | awk '{if ($5 < 200) print $8}' | tee -a filelog

0바이트의 파일을 나열하고, 목록을 파일에 기록하고, 빈 파일을 삭제합니다.

ls -l | awk '{if ($5 == 0) print $8}' | tee -a deletelog | xargs rm

답변4

사용fd, 이는 것보다 사용하기 훨씬 더 좋습니다.find

fd -S +1g

현재 디렉토리에서 1GB보다 큰 파일을 검색합니다.

fd -S -1g

파일을 검색합니다더 작은1GB 이상

관련 정보