TCSH 또는 Bash의 상징적 링크 인 파일 및 폴더 만 표시
문제
기본적으로 나는 다음을 원합니다.
ls -l[+someflags]
(또는 다른 수단으로) 상징적 링크 인 파일 만 표시 할 수 있습니다.
그래서 출력이 보일 것입니다
-rw-r--r-- 1 username grp size date-time filename -> somedir
-rw-r--r-- 1 username grp size date-time filename2 -> somsdfsdf
등.
예를 들어,
디렉토리 만 표시하려면 별칭이 있습니다.
alias lsd 'ls -l | grep ^d'
숨겨진 파일 또는 숨겨진 디렉토리 만 표시하는 방법이 궁금합니다.
다음 솔루션이 있지만 출력을 색상으로 표시하지 않습니다.
ls -ltra | grep '\->'
해결책
디렉토리에서 모든 기호 링크를 찾으십시오.
ls -l `find /usr/bin -maxdepth 1 -type l -print`
숨겨진 파일 목록 :
ls -ald .*
다른 팁
ls -l | grep lrw
Symlinks (파일 및 디렉토리) 만 표시합니다. 그래도 화려하게 만드는 방법을 잘 모르겠습니다.
ls -lad .*
숨겨진 파일/디렉토리 만 표시합니다
ls -l | grep drw
디렉토리 만 보여줍니다.
"숨겨진"폴더 - 도트 폴더 만 사용하십시오.
ls -l .**
그렇습니다. 두 개의 별표가 필요합니다. 그렇지 않으면도 얻을 수 있습니다. 그리고 .. 결과에서.
Symlinks의 경우 Symlinks 프로그램을 사용해보십시오.
symlinks -v .
(현재 디렉토리에 모든 Symlinks 표시)
Symlinks 만 표시하고 다음과 같은 링크를 표시합니다.
find -P . -type l -exec echo -n "{} -> " \; -exec readlink {} \;
이 dir로 제한합니다
find -P . -maxdepth 1 -type l -exec echo -n "{} -> " \; -exec readlink {} \;
예제 출력 (ln -s /usr /bin moo 이후) :
./moo -> /usr/bin
당신은 거의 당신의 Grep 솔루션으로 거기에있었습니다. 다시 색을 입히는 데 집중합시다.
이 시도:
ls --color=always -ltra | grep '->'
@christophed가 제공 한 수락 된 답변에 대해 약간의 개선 (평판이 충분하지 않기 때문에 허용 된 답변에 대한 coudnt 댓글)
나는 별칭을 사용합니다
findsymlinks <path> <depth>
별칭이있는 곳
alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto"
파일 유형 플래그를 시도하고 @을 제거하십시오.
ls -F /home/usr/foo | grep "@" | sed 's/@//'
(t) csh의 경우:
ls --color=always -ltra | grep '\->'
(이것은 단순히입니다 PBR의 대답 그러나 하이픈이 탈출하면서.)
맥 OS X
OSX에서 ls
다르게 작동하므로 이것을 추가하십시오 ~/.cshrc
파일:
setenv CLICOLOR_FORCE 1 # (equivalent of Linux --color=always)
그리고 전화 :
ls -G -ltra | grep '\->' # (-G is equivalent of ls --color)
Bash의 경우 :
이것은 좋은 출력을 제공합니다.
sl=`find -L /path/to/target -xtype l`; for links in $sl; do ls --color=always -ltra $links; done | sed 's/^/ /'
echo > linklist.found && $(for i in `find /path/to/dir/ -type l`; do echo `ls -d --color=always $i` `echo " -> "` $(ls -d --color=always `readlink -f $i`) >> linklist.found; echo >> linklist.found; done;) && cat linklist.found | more
이것은 나에게 좋습니다. 그러나 당신이 검색 / 파일 시스템 루트를 검색 할 경우 Proc Directory를 생략해야합니다.
사용법 : foo $ 경로
지정되지 않은 경우 현재 경로를 사용합니다.
#!/bin/bash
case "$1" in
-r)
find $2 -type l -print | while IFS= read line ; do ls -l --color=always "$line"; done
;;
--help)
echo 'Usage: foo [-r] [$PATH]'
echo
echo '-r Recursive'
;;
*)
ls --color=always -ltra $1 | grep '\->'
esac