디렉토리와 하위 디렉토리에서 특정 유형의 파일을 찾아서 파일 이름을 인쇄해야 합니다. 이것이 주요 명령입니다.
find -type f -name "*.c"
이제 각 결과에서 경로를 어떻게 차단할 수 있습니까? (아마도 awk를 사용하여 이 작업을 수행할 수 있지만 더 쉽게 수행할 수 있는 방법이 있기를 바랍니다.)
답변1
GNU find는 파일 이름에 대한 형식 지정자 출력을 -printf
지원하는 조건자를 지원합니다.%f
find -type f -name "*.c" -printf '%f\n'
답변2
사용이 복잡하지 않습니다 awk
.
find . -name '*.c' -type f | awk -F/ '{print $NF}'
또는 sed
:
find . -name '*.c' -type f | LC_ALL=C sed 's|.*/||'
(파일 경로에 개행 문자가 포함되어 있지 않다고 가정) 이는 모든 find
구현에서 작동합니다.
그리고 zsh
:
print -rC1 -- **/*.c(N.:t)
답변3
이 basename
프로그램을 사용하여 파일 이름을 얻을 수 있습니다.
find . -type f -name \*.c -exec basename {} +
이는 find
GNU 확장이 없는 시스템에서 작동합니다 -printf
.
답변4
GNU 조회는 -printf
. 하위 디렉터리도 검색하면 파일 이름이 (보통) 여러 번 나타날 수 있습니다!
당신은 -printf "%p\n"
또는 -printf "%f\n"
.