디렉토리 목록에서 심볼릭 링크를 제외하고 싶습니다. 나는 다음 명령을 사용하고 있습니다 :
dir --ignore=@ -F
그러나 기호 링크는 표시된 대로 계속 나열됩니다.
https://i.stack.imgur.com/kWxi4.png
dir 명령을 사용할 때 이를 제외하는 방법은 무엇입니까?
감사해요.
답변1
find
다음을 사용하여 심볼릭 링크를 제외 할 수 있습니다 .
find -maxdepth 1 ! -type l ! -path './.*' -ls
! -type l
심볼릭 링크는 제외했습니다 . 따라서 디렉토리, 일반 파일, 특수 파일 등이 표시됩니다. 숨겨진 파일을 제외
했습니다 ! -path './.*'
(예 .bashrc
: , .profile
)
출력을 원하거나 다음을 ls
사용해야 dir
하는 경우:
#With color
find -maxdepth 1 ! -type l ! -path './.*' -exec ls --color=yes -Fd {} +
#No color
find -maxdepth 1 ! -type l ! -path './.*' -exec ls -Fd {} +
답변2
쉘을 사용하면 zsh
다음을 사용할 수 있습니다.글로벌 예선전역 확장자에서 유형별로 파일을 필터링합니다.
dir -Fd -- *(^@)
dir
현재 디렉토리에 숨겨져 있지 않은 파일을 호출합니다아니요( ^
) 유형심볼릭 링크( @
)를 매개변수로 사용합니다.
목록만 보기만 하면 내장 함수 dir
(또는 이에 상응하는 Unixy 함수)를 호출할 필요도 없고 그냥 ls
전달하면 됩니다 .zsh
print
예를 들어:
print -rC1 -- *(^@)
print
그 칼럼을 보고 그들은 r
놀랐 을까 1
C
?
방주 한정자를 사용 M
하면/
목차마찬가지로 dir -F
, 이는 디렉토리에서만 작동하지만
print -rC1 -- *(M^@)
답변3
--ignore
유형에서는 작동하지 않고 패턴에서는 작동합니다. 예를 들어 파일이 있는 경우:
$ ls
a.txt b.dat c.txt d.dat
$ ls --ignore='*.txt'
b.dat d.dat
심볼릭 링크를 필터링하는 쉬운 방법은 없지만 다음을 사용해 볼 수 있습니다.grep
ls -F | grep -v "@"