나는 종종 큰 디렉터리 ~/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 fff
fff
파일 " "의 첫 번째 줄을 인쇄하는 방법 입니다 .\;
find(1)
사용자 정의 명령이 끝나는 위치를 알려줍니다 .
을 텐데일부하위 디렉토리 .gitignore
에는 무엇이 있나요 ?
find . -type d -exec [ -e {}/.gitignore ] \; -printf '%30f ==> ' -exec sed q {}/.gitignore \;
다시 우리는 도움을 요청했습니다 -exec
. 현재 처리 중인 하위 디렉터리의 이름은 " "라고 가정합니다 ddd
. 해당 디렉터리에 아무 것도 없으면 [ -e ddd/.gitignore ]
false로 평가됩니다. 테스트가 false로 평가되면 포기하고 다음 하위 디렉터리로 이동합니다..gitignore
ddd/
find(1)