2022-02-24-TIL
Today I Learned
특정 문자열로 시작하는 파일 지우기
가장 간단한 방법은 셸의 패턴 매칭(glob)을 쓰는 것이다. Bash 매뉴얼에 따르면 *는 빈 문자열을 포함한 아무 문자열에나 매칭된다. 패턴은 rm이 아니라 셸이 먼저 파일 이름 목록으로 펼친 뒤 rm에 넘긴다.
1
2
3
ls report_* # 먼저 무엇이 지워질지 확인한다
rm report_*
rm -i report_* # 하나씩 확인하면서 지운다
rm은 되돌릴 수 없으므로 같은 패턴으로 ls를 먼저 실행해 대상을 확인하는 습관이 안전하다.
이름이 -로 시작하는 파일은 rm이 옵션으로 해석해 버린다. GNU rm 문서는 --를 주면 그 뒤의 인자를 모두 옵션이 아닌 것으로 취급한다고 설명한다. ./를 앞에 붙여도 된다.
1
2
rm -- -foo
rm ./-foo
파일이 아주 많으면 셸이 펼친 목록이 너무 길어 Argument list too long 오류가 날 수 있다. 이때는 find로 찾아서 지운다. find의 -delete는 찾은 파일을 삭제하는 동작이고(find(1)), 하위 디렉터리까지 내려가지 않으려면 -maxdepth 1을 준다. 여기서도 -delete 없이 먼저 실행해 목록을 확인한다.
1
2
find . -maxdepth 1 -name 'report_*' -type f
find . -maxdepth 1 -name 'report_*' -type f -delete
- https://www.cyberciti.biz/faq/unix-linux-remove-strange-names-files/
- https://superuser.com/questions/482435/how-to-remove-all-files-starting-with-a-certain-string-in-linux
파일 시스템 디스크 공간 확인
df는 마운트된 파일 시스템별로 전체 크기, 사용량, 남은 공간을 보여 준다. 디스크가 꽉 찼는지 볼 때 가장 먼저 쓰는 명령이다. GNU df 문서에 따르면 -h는 크기에 M, G 같은 단위를 붙여 사람이 읽기 쉽게 보여 주고, 1024의 거듭제곱을 쓴다. -T는 파일 시스템 타입을 함께 보여 준다.
1
2
df -h
df -hT
용량은 남았는데 파일을 만들 수 없다면 inode가 바닥났을 수 있다. 작은 파일이 아주 많으면 생기는 일이고, df -i로 inode 사용량을 확인한다.
- https://shaeod.tistory.com/680
파일 시스템 디스크 사용량 확인
df가 파일 시스템 단위라면 du는 파일과 디렉터리 단위로 사용량을 센다. 디스크가 찼다는 것을 df로 확인한 뒤, 어느 디렉터리가 공간을 차지하는지 du로 좁혀 간다.
GNU du 문서에 따르면 -s는 인자로 준 디렉터리마다 합계만 보여 주고, --max-depth=N은 N단계 아래까지의 합계를 보여 준다. --max-depth=0은 -s와 같다.
1
2
3
du -sh /var/log # 디렉터리 하나의 합계
du -h --max-depth=1 /var # 바로 아래 디렉터리별 합계
du -h --max-depth=1 /var | sort -h
macOS의 BSD du는 --max-depth 대신 -d 1을 쓴다.
- https://www.tecmint.com/check-linux-disk-usage-of-files-and-directories/
- https://www.commandlinefu.com/commands/view/1620/do-a-directory-disk-usage-summary-without-giving-the-details-for-the-subdirectories
댓글
아직 댓글이 없습니다