디렉토리를 조사하여 a-z 로 시작하는 각 파일에 대해 해당 파일의 전체 크기를 인쇄할 수 있는 쉬운 방법이 있습니까?
예를 들어
for i in {97..122}; du (something); done
출력됩니다 >>
a-123kb
b-22kb
...
z-1245kb
답변1
이는 와일드카드를 사용하여 달성할 수 있습니다.
$ du [a-z]*
456 asdf.png
12 awk.trace
28 blink_image_resources_200_percent.pak
0 Books
glob으로 확장된 항목이 디렉터리인 경우 du
해당 디렉터리의 내용이 순회되므로 별도의 항목 목록이 아닌 디렉터리의 전체 크기에만 관심이 있는 경우 이 작업을 수행할 수 있습니다 du -s [a-z]*
. 예 k
를 들어 사람이 읽을 수 있는 접미사를 원하면 옵션을 M
사용하세요 -h
.
물론 셸은 셸 옵션과 파일 이름 일치를 위한 재귀 순회를 통해 더욱 세분화된 패턴 일치를 좋아 bash
하고 가지고 있습니다. 재귀적이고 세분화된 파일 이름 일치에 명령을 사용할 수도 있고 심지어 디렉터리를 제외하는 데에도 사용할 수 있습니다.ksh
bash
extglob
globstar
find
find . -maxdepth 1 -mindepth 1 -type f -exec du -s {} \;
중괄호 확장은 경로 이름 확장, 즉 이미 디렉토리에 있는 항목, 현재 작업 디렉토리에 존재할 수도 있고 존재하지 않을 수도 있는 토큰 목록으로의 확장을 {0..9}
수행하지 않는다는 점도 주목할 가치가 있습니다 .*
{0..9}