나는 그것이 쉬울 것이라고 생각했고 인터넷에 다소 유사한 스레드가 많이 있지만 완전히 맞는 것은 없습니다.
(간단한 find 명령)을 사용하여 검색 결과의 파일 이름과 파일 크기만 표시하고 싶습니다 fd
(MB 단위 또는 바이트보다 읽기 쉬운 형식이 바람직함).
내가 얻은 가장 가까운 것은 다음을 사용하는 것입니다.
fd '2023' -x stat --format='%n : $s'
이것은 파일에서는 작동하지만 디렉토리에서는 작동하지 않는 것 같습니다.
예를 들어
fd --type d '2023' -x stat
나는 파이프를 연주해 보았습니다. tee
하지만xargs
초보자로서 나는 운이 좋지 않습니다.
파일 및 폴더의 출력을 표시하는 방법과 바이트를 적절한 단위로 형식화하는 방법에 대한 아이디어가 있습니까?
감사해요
답변1
원하는 것은 디렉터리 파일의 크기가 아니라 이러한 디렉터리와 이를 탐색하여 찾을 수 있는 모든 파일의 누적 크기 또는 디스크 사용량인 것 같습니다.
그런 다음 다음을 수행할 수 있습니다.
fdfind --type d 2023 -X du -sh --
( 데비안과 그 파생물의 명령 이름은 전혀 관련이 없는 것에 대한 fdfind
기존 명령이 있기 때문에 여기에서 사용됩니다 . 이것이 시스템에서 호출되는 방식인 경우 해당 이름으로 바꾸십시오.)fd
fd
d
이는 isk u
sage 용입니다 . 크기 대신 --apparent-size
옵션 을 추가하세요.du
du
파일이 여러 디렉터리(하드 링크 또는 동일한 경로를 통해)에서 발견되면 일부 중복 제거가 수행되고 파일의 디스크 사용량은 한 번만 계산됩니다 . 예를 들어 디렉터리가 있는 경우 하위 디렉터리 와 그 안의 모든 파일이 상위 디렉터리에 대한 보고서에서 고려 되므로 하위 디렉터리의 디스크 사용량을 2023/2023
볼 수 있습니다 .0
2023
를 사용하여 중복 제거를 비활성화할 수 있습니다 --count-links
.
일치하는 디렉터리에서 더 많은 파일 검색을 중지 --prune
하는 옵션을 전달할 수도 있습니다 .fdfind
--
파일에서 옵션을 분리해야 한다는 점에 유의하세요 (옵션이 없으면 이름이 로 지정된 파일에 문제가 발생합니다( -2023
예: 잠재적인 정보 공개 취약점으로 이어짐). 대부분의 명령 --files0-from=2023/etc/shadow
에도 동일하게 적용됩니다 .stat
그리고 가능한 한 많은 파일 경로를 전달 -X
하는 대신 -x
for는 du
각 파일에 대해 새 프로세스에서 한 번 실행됩니다. du
일치하는 파일이 많으면 여러 번 호출되어 위에서 언급한 중복 제거를 신뢰할 수 없게 될 수 있으므로 주의하세요 . 파일 목록을 전달하는 더 좋은 방법 은 이 옵션을 사용하여 표준 입력을 사용 du
하는 것입니다 . 그런 다음 누적 값을 가져오는 옵션을 --files0-from
추가할 수도 있습니다.-c
c
모두마지막 줄:
fdfind --type d --print0 2023 | du --files0-from=- -sch --
-h
( --human-readable
), --count-links
및 --files0-from
는 --apparent-size
모두 GNU에서 구현한 비표준 확장입니다 du
. -h
오늘날 다른 구현에서는 일반적이지만 다른 구현 에서는 더 드뭅니다 ( --human-readable
긴 형식 의 include).-h
1 디렉토리를 다음과 같이 생각하십시오.전화 번호부예를 들어. 많은 파일 시스템에서 이는 CSV 파일과 약간 유사합니다. 여기서 한 열에는 파일 이름 목록이 포함되고 다른 열에는 디스크의 파일 이름(inode 번호) 목록이 포함됩니다(때로는 세 번째 열이 파일 유형을 나타냄). 다른 파일과 마찬가지로 디렉터리/csv 파일에는 자체 크기와 디스크 사용량이 있으며 이는 gstat -c %s
OR gfind -printf %s
로 보고됩니다 ls -l
.