찾기 결과에 "사람이 읽을 수 있는" 파일 크기를 표시하는 방법은 무엇입니까?

찾기 결과에 "사람이 읽을 수 있는" 파일 크기를 표시하는 방법은 무엇입니까?

Centos 서버에서 모든 대용량 파일을 찾으려고 합니다. 이를 위해 다음을 사용하고 있습니다.

find / -maxdepth 10 -size +100000 -ls

-ls로 변경해 보았지만 -lsh이는 허용되지 않습니다.

이러한 결과를 사람이 읽을 수 있는 크기(접미사 k, M, ... 사용)로 표시하려면 어떻게 해야 합니까?

답변1

find와 같은 것은 없습니다 ls. 원하시면 ls -h전화하셔야 합니다 ls.

find / -maxdepth 10 -size +100000 -exec ls -lh {} +

다른 파일 시스템으로의 재귀를 피하기 위해 옵션을 선택하는 것이 좋습니다 -xdev. 디스크 공간이 걱정된다면 이는 쓸모가 없습니다.

find / -xdev -maxdepth 10 -size +100000 -exec ls -lh {} +

zsh를 쉘로 사용하는 경우 find대신 glob 한정자를 사용할 수 있습니다. 파일 크기를 제한하는 것은 간단합니다. L크기 뒤에는 숫자 앞에 선택적 단위가 있을 수 있습니다. 최대 깊이에 관심이 없다면 **/하위 디렉터리로의 재귀를 사용할 수 있습니다. 최대 깊이에 관심이 있다면 zsh glob 모드에 "maximum"이라는 표현이 없기 때문에 더 문제가 됩니다.N장치 간 재귀를 방지하려면 glob 한정자를 사용하세요 . 장치 번호를 찾아야 합니다. Linux에서 명령을 사용 하거나(번호만 표시) zsh 자체 내장 명령(실행 하여 로드) 을 사용하여 d장치 번호를 찾아야 합니다 . 그것) .statstat -c %d /statzmodload zsh/stat

ls -lh /**/*(L+M99d$(stat -c %d /))

답변2

당신이 시도하는 명령은 내가 읽을 수 있습니다. 그러나 아래와 같이 파일 유틸리티를 사용하여 찾을 수 있습니다.

find / -maxdepth 10 -size +100000 -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print

또 다른 방법은 다음 명령을 사용하는 것입니다.

du -BM / | sort -nr

위의 명령은 정렬된 파일 크기별로 정렬된 파일을 제공합니다.

당신이 사용하는 경우코어유틸 > 7.5, 다음 명령을 실행하여 파일을 크기별로 나열할 수 있습니다.

du -ah / | grep -v "/$" | sort -h

sort -h내 컴퓨터에는 사용할 수 있는 옵션이 없습니다 .

의견에서 언급했듯이 사람이 읽을 수 있는 형식은 파일 크기가 다음과 같아야 한다는 것입니다.지식 기반,MB또는국가 표준. 답변으로 게시한 두 번째 명령을 사용하겠습니다. 내 시스템에서 사용할 때 얻는 결과는 다음과 같습니다.

du -BM /home/ramesh/chk1/ | sort -nr

50M     /home/ramesh/chk1/
21M     /home/ramesh/chk1/Hierarchical_Clustering_Working
3M      /home/ramesh/chk1/checking_files
1M      /home/ramesh/chk1/checking/checking2
1M      /home/ramesh/chk1/checking/checking1
1M      /home/ramesh/chk1/checking/asdf
1M      /home/ramesh/chk1/checking

답변3

나는 당신이 추구하는 것이 다음과 같다고 생각합니다.

find / -maxdepth 10 -size +100000 -exec ls -lah {} + 

-exec명령을 실행하고 {}찾기 결과로 바꿀 수 있습니다. 마지막으로 +find에게 이것이 명령의 끝이며 필수임을 알리는 것입니다.

답변4

du -bah나는 over의 깔끔한 출력을 선호합니다 ls -hl(내 기억력을 향상시키는 데 사용할 수 있으면 좋겠지 du -hab만 순서는 다를 수 있습니다).

find / -maxdepth 10 -size +100000 -exec du -bah {} + 2> /dev/null

du일반적으로 정확한 파일 크기보다는 디스크 블록 크기가 표시되므로 의 -b또는 옵션이 필요합니다 .--bytes--apparent-size --block-size=1du

du -bmacOS 시스템에는 이 옵션이 없을 수도 있습니다 .du

관련 정보