파일이 많은 경우엔, ls 명령어를 통해 디렉토리 내부를 출력한뒤 일일히 세기에는 조금 무리가 있다고 봅니다. 그럴때는 | 파이프를 통해,

ls | wc -l


해주시면 현재 디렉토리내에 파일과 서브 디렉토리가 몇개나 되는지 보실 수 있어요. 디렉토리 갯수만 찾고 싶으실 때는 아래처럼 조금만 바꿔주시면 됩니다.

ls -d */ | wc -l


주- 서브 디렉토리를 검색하지 않고 "/" 로 끝나는 것 (디렉토리) 만을 표시해서 갯수를 세라.

물론 제시된 방법들은 간단하긴 하지만 재미가 없습니다. 특히 파일갯수만 세는 것도 힘들구요. 그래서, 요즘 find, |, grep등의 조합으로 재미를 보고 있는 지라 조금 복잡해보일지라도 이것 저것 가져다 붙여보기로 했습니다. :D

우선,

find . | wc -l


명령어는 현재 디렉토리를 시작으로 모든 파일과 서브 디렉토리를 검색합니다.

여기서 살짝 추가해 줄 것이,

find . -type d | wc -l


하지만 이렇게 하면 서브 디렉토리까지 모두 검색이 되니,

find . -type d -maxdepth 1 | wc -l


로 바꿔줍니다. 이렇게 하면 현재 디렉토리내에 존재하는 서브 디렉토리만 보여주게 되죠.

여기에다가 조금만 더 바꿔주면,

find . -type d -maxdepth 1 -path './*' | wc -l


현재 디렉토리를 의미하는 . 까지 없애줄 수 있습니다. :) 또는 색다르게,

find . -type d -maxdepth 1 -name "*" | wc -l


도 동일한 결과를 보여줍니다.

파일만 검색하고 싶을 때는 d 대신에 f 를 사용하시면 되요. -type f 로.

유닉스 명령어. 이것 저것 배우다 보면 재밌게 응용할 수 있는 부분이 굉장히 많다고 생각됩니다. :)

주- [man find]
       -type c
              File is of type c:

              b      block (buffered) special

              c      character (unbuffered) special

              d      directory

              p      named pipe (FIFO)

              f      regular file

              l      symbolic link

              s      socket

              D      door (Solaris)

Posted by hyomini 트랙백 0 : 댓글 2