"ls"와 같은 CLI 도구가 있지만 디렉터리에 대한 추가 정보도 표시합니까(예: README.md의 첫 번째 줄)

"ls"와 같은 CLI 도구가 있지만 디렉터리에 대한 추가 정보도 표시합니까(예: README.md의 첫 번째 줄)

나는 종종 큰 디렉터리 ~/code내에 별도의 디렉터리로 작은 프로젝트를 만듭니다 . 그러나 시간이 지나면서 나는 이 디렉토리의 내용을 잊어버렸고 불행하게도 dirname사용 사례를 해독하는 것만으로는 충분하지 않았습니다.

ls각 항목에 대한 간략한 정보도 표시하도록 향상(또는 다른 유틸리티의 별칭) 하는 방법이 있습니까 ? 나는 그것이 디렉토리 이름과 함께 프로젝트 디렉토리에 있는 README.md의 몇 줄을 표시할 것이라고 상상합니다.

답변1

그러한 도구는 없지만 이것은 UNIX이므로 쉽게 만들 수 있습니다. :-)


주변에 파일 이 없으므로 각 하위 디렉터리 아래의 파일을 README.md사용하여 첫 번째 줄을 인쇄하겠습니다 ..gitignore

find . -type d -printf '%30f ==> ' -exec sed q {}/.gitignore \;

예제 출력:

                   control-DBs ==> autogen.h
                         basic ==> flarp.exe
                    postgresql ==> libpgstore.a
                            ui ==> .DS_Store
                       plugins ==> *.*~

어떻게 작동하나요?

  • -type d: 하위 디렉터리만 찾습니다.
  • printf '%30f ==> ': -printf파일에 대한 다양한 정보를 인쇄하기 위한 여러 코드를 허용합니다(기술적으로 디렉토리는 파일 유형입니다.)을 처리 중입니다. ls(1)더 간단한 옵션을 사용하여 출력을 시뮬레이션 할 수 있는 코드가 충분합니다 . 를 참고 man find하시거나https://man7.org/linux/man-pages/man1/find.1.html전체 목록은 다음과 같습니다.
    • %f: 기본 이름
    • %s:크기(바이트)
    • %m: 권한(모드 비트라고도 함)
  • -exec sed q {}/.gitignore \;find(1): 여기에서는 처리 중인 각 하위 디렉터리에 대해 실행할 사용자 지정 명령을 제공합니다 .
    • {}파일의 경로를 나타냅니다.
    • sed q ffffff파일 " "의 첫 번째 줄을 인쇄하는 방법 입니다 .
    • \;find(1)사용자 정의 명령이 끝나는 위치를 알려줍니다 .

을 텐데일부하위 디렉토리 .gitignore에는 무엇이 있나요 ?

find . -type d -exec [ -e {}/.gitignore ] \; -printf '%30f ==> ' -exec sed q {}/.gitignore \;

다시 우리는 도움을 요청했습니다 -exec. 현재 처리 중인 하위 디렉터리의 이름은 " "라고 가정합니다 ddd. 해당 디렉터리에 아무 것도 없으면 [ -e ddd/.gitignore ]false로 평가됩니다. 테스트가 false로 평가되면 포기하고 다음 하위 디렉터리로 이동합니다..gitignoreddd/find(1)

관련 정보