Centos 서버에서 큰 파일을 모두 찾으려고합니다. 그렇게하려면 내가 사용하고 있습니다 :
find / -maxdepth 10 -size +100000 -ls
로 변경 -ls
을 시도했지만 -lsh
허용되지 않습니다.
사람이 읽을 수있는 크기 (접미사 k, M,…)로 이러한 결과를 표시하려면 어떻게해야합니까?
답변
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 패턴에 “최대 n 번 발생” 을 표현할 수있는 방법이 없기 때문에 더 번거 롭습니다 . 교차 장치 재귀를 피하려면 d
glob 한정자를 사용하십시오 . stat
Linux 에서 명령 stat -c %d /
으로 표시하거나 (숫자 만 표시) zsh 자체 stat
내장 ( zmodload zsh/stat
로드하여 실행 )으로 표시 할 수있는 장치 번호를 찾아야합니다 .
ls -lh /**/*(L+M99d$(stat -c %d /))
답변
당신이 시도하는 명령을 읽을 수 있습니다. 그러나 아래와 같이 찾기 기능으로 파일 유틸리티를 사용할 수 있습니다.
find / -maxdepth 10 -size +100000 -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
이를 수행하는 다른 방법은 아래 명령을 사용하는 것입니다.
du -BM / | sort -nr
위의 명령은 정렬 된 파일 크기의 파일을 제공합니다.
coreutils> 7.5를 사용하는 경우 아래 명령을 실행하여 파일을 크기별로 나열 할 수 있습니다.
du -ah / | grep -v "/$" | sort -h
내 컴퓨터에서 sort -h
옵션을 사용할 수 없었습니다 .
주석에서 언급했듯이 사람이 읽을 수있는 형식은 파일 크기가 kb , mb 또는 gb 이어야한다는 것 입니다. 나는 대답으로 게시 한 두 번째 명령을 사용합니다. 시스템에서 사용할 때 얻은 결과는
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
답변
나는 당신이 겪고있는 것이 다음과 같다고 생각합니다.
find / -maxdepth 10 -size +100000 -exec ls -lah {} +
은 -exec
당신이 명령을 실행 할 수 있습니다와는 {}
찾기 ‘의 결과로 대체됩니다. 마지막으로 명령의 끝임 +
을 알리고 명령이 필요합니다.