주문하다:
du -sh $HOME/* | grep '[0-9]G\>' | sort -k 1rn | head -1
나에게 주는 것:
41G /Users/user/Big folder
스크립트에서 재사용하기 위해 경로를 추출하려면 어떻게 해야 합니까?
du -sh $HOME/* | grep '[0-9]G\>' | sort -k 1rn | head -1 | awk '{ print $2 }'
출력됩니다
/Users/user/Big
이것은 사용할 수 없습니다. 다음과 같은 결과를 찾고 있습니다.
/Users/user/Big\ folder
답변1
자동화할 때 다른 단위의 숫자를 사용하여 생활을 복잡하게 만들지 마십시오. -h
에 전달하지 마십시오 du
. 그런 다음 출력에 간단한 숫자 정렬을 사용할 수 있으며 디렉터리 중 하나에 1TB 이상의 데이터가 있는 경우 스크립트가 계속 작동합니다.
du -s ~/* | sort -k 1n | tail -n1
가장 큰 하위 디렉터리에 1GB 미만이 포함되어 있어도 항상 한 줄을 인쇄합니다. 이것이 원하는 것이 아닐 경우 "출력이 비어 있음" 조건을 "임계값보다 작은 숫자입니다"로 바꿀 수 있습니다.
디렉터리 이름을 추출하려면 출력을 가져와 첫 번째 탭까지 해당 부분을 제거합니다.
largest_directory=$(du -s ~/* | sort -k 1n | tail -n1)
largest_directory_size_kB=${largest_directory%%$(printf '\t')*} # if you need the size
largest_directory=${largest_directory#*$(printf '\t')}
답변2
앞쪽:
du -s "$HOME"/* | sort -rnk1 | LC_ALL=C sed -e "s,[^/]*\(/.*\),'\1',;q"
그렇지 않은 경우 -h
결과 du
에는 간단한 크기 숫자가 포함되므로 추가 작업 없이 쉽게 정렬할 수 있습니다 grep
.
첫 번째 줄에서 삭제를 사용한 sed
다음 종료하면 head
통화가 저장됩니다.
답변3
필요한 경로를 추출하는 또 다른 방법은 read
이러한 du
작업을 수행한 후 명령을 전달한 sort-ed
다음while/read
du.. sort.. | while read x d; do echo "$d"; done