디렉토리 경로에 대해서만 찾기 결과를 얻을 수 있습니까? 일부 옵션과 함께 find를 사용하거나 grep 또는 다른 유틸리티를 사용하여 결과를 필터로 연결하시겠습니까?
나는 비슷한 것이 find | grep */$
효과가 있을 것이라고 생각했지만 그렇지 않습니다. 특정 이름을 가진 폴더를 "검색"한 다른 테스트에서 히트를 얻는 것처럼 보이지만 folder_name$
아무 것도 없습니다 folder_name/$
. 이것은 직관에 어긋나는 것 같습니다. 로 끝나는 줄을 찾기 위해 grep하는 방법은 무엇입니까 /
?
답변1
예, 이것이 -type d
바로 이 옵션의 목적입니다.
예를 들어:
$ find /boot -type d
/boot
/boot/grub
/boot/grub/locale
/boot/grub/fonts
/boot/grub/i386-pc
매뉴얼 페이지의 관련 부분은 다음과 같습니다.
-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; this is never true if the -L option or the
-follow option is in effect, unless the symbolic link is
broken. If you want to search for symbolic links when -L
is in effect, use -xtype.
s socket
D door (Solaris)
답변2
보충제로피레우스 제로의 답변, 디렉토리로 확인되는 심볼릭 링크를 포함하려는 경우:
GNU를 사용하여 다음을 찾으세요.
find . -xtype d
POSIX적으로:
find . -exec test -d {} \; -print
다음과 같이 최적화할 수 있습니다.
find . \( -type d -o -type l -exec test -d {} \; \) -print
디렉토리 트리를 내려갈 때 기호 링크를 따라가려면 다음을 수행할 수 있습니다.
find -L . -type d
디렉토리와 디렉토리에 대한 기호 링크를 보고합니다. 심볼릭 링크를 원하지 않는 경우:
GNU를 사용하여 다음을 찾으세요.
find -L . -xtype d
POSIX적으로:
find -L . -type d ! -exec test -L {} \; -print
그리고 zsh
:
print -rC1 -- **/*(ND/) # directories
print -rC1 -- **/*(ND-/) # directories, or symlinks to directories
print -rC1 -- ***/*(ND/) # directories, traversing symlinks
print -rC1 -- ***/*(ND-/) # directories or symlinks to directories,
# traversing symlinks