내 데스크탑에는 휴지통에 있는 파일의 현재 크기를 표시하는 위젯이 있습니다. 위젯의 코드는 다음과 같습니다.
du -ch ~/.Trash | grep total | cut -c 1-5
이렇게 하면 "99M"과 같은 결과가 나타납니다. 하지만 "99MB"(각각 KB, GB)를 표시하고 싶습니다. 이 결과를 얻으려면 코드를 올바른 문자열로 바꾸도록 도와주실 수 있나요? ("99"와 "MB" 사이의 공백도 참고하세요) 미리 감사드립니다!
추신: 저는 Mac OS X 10.11.6을 사용합니다.
답변1
전체 크기 값만 표시하려면 -s
( ) 옵션을 사용하십시오 .--summarize
du -sh | sed 's/^\([0-9]*\)\([^B]\).*/\1 \2B/'
([0-9]*\)
- 전체 크기 값 캡처([^B]\)
B
- (바이트, 그대로 유지)를 제외한 캡처 단위 단축 값
답변2
tr을 사용하여 후행 공백을 제거하고 echo 명령에서 "B"로 묶을 수 있습니다.
echo "$(du -ch ~ | grep total | cut -c 1-5 | tr -d '[:blank:]')B" | sed 's/\(K\|M\|G\)B/ \1B/'
그렇지 않으면sed그것:)
du -ch ~ | grep total | cut -c 1-5 | sed 's/\s\+$/B/' | sed 's/\(K\|M\|G\)B/ \1B/'
편집 0: 장치 앞의 공간을 인식하지 못하고 작업을 수행하기 위해 sed를 추가하게 되었습니다.
답변3
크기가 10K에서 99K 사이(예: 42K)인 경우 처음 5개 문자 출력은 다음과 같습니다.
4
2
K
(상표)/
(이는 경로 이름 인수가
/
- 로 시작한다고 가정합니다. 이는 로 시작하는 인수를 지정하는 경우입니다~
.) 이것은 :cut -c 1-5
의 출력이 될 것입니다42K /
. (내 생각에는nnM
둘 다 동일한 문제가 있을 것입니다.) 다음을 사용하여 첫 번째 것을 얻는 것이nnG
더 합리적입니다.cut -f1
대지처음 5자가 아닌 출력 문자입니다.- 디렉토리 이름에 단어가 포함되어 있으면 어떻게 되나요
total
? 팁: 각 하위 디렉터리에 대한 데이터를 생성한 다음 삭제하는grep
대신 전체를 생성하는 것이 더 합리적입니다. ~처럼df
grep
df
로만 페레크레스트는 지적했다.,-s
옵션을 지정하여 이를 수행할 수 있습니다. ~처럼dmgnx가 지적했습니다
K
, 숫자( 또는 로 끝나는)가 있으면 추가하기만 하면 됩니다 . 따라서 내 복합 솔루션은 다음과 같습니다M
.G
B
echo "$(du -sh ~/.Trash | cut -f1)B"
이런! 숫자와 단위 사이에 공백을 추가하고 싶다는 것을 몰랐습니다. 좋습니다. 따라서 다음이 필요합니다
sed
(또는 이와 유사한 것).du -sh ~/.Trash | cut -f1 | sed 's/[KMG]$/ &B/'
아니면 그냥
du -sh ~/.Trash | sed 's/^\([0-9.]*\)\([KMG]\).*$/\1 \2B/'
(
sed
디렉토리 이름을 삭제하고cut
완전히 제거하는 경우)
답변4
강제적이고 임의로:
du -ch ~/.Trash | grep total | cut -c 1-5 |
sed -e 's/K$/ KB/; s/M$/ MB/; s/G$/ GB/'