ls
옵션을 사용 --group-directories-first
하면 디렉토리가 맨 위에 표시되어 결과가 ls
좋고 깨끗합니다.
ls -l --group-directories-first
그러나 symlinks
실제로 symlinks
는 디렉토리 에 대해 작동하지 않습니다 . 사용할 가능성이 있습니다
ls -l -L --group-directories-first
이것은 두 종류의 디렉토리를 맨 위에 나열하지만 올바른 디렉토리와 심볼릭 링크 디렉토리를 구별하지 않으므로 다시 혼란 스럽습니다.
수 ls
여전히 일반 디렉토리 구별을 유지하면서, 상단에 심볼릭 링크 디렉토리를 표시?
편집 :
사용하고 bash
있습니다.
답변
아니요,을 사용하는 zsh
경우 다음을 수행 할 수 있습니다.
mll() {
(($#)) || set -- *(N-/) *(N^-/)
(($#)) && ls -ldU -- $@
}
다음과 같이 globbing 정렬 순서를 정의 할 수도 있습니다.
dir1st() { [[ -d $REPLY ]] && REPLY=1-$REPLY || REPLY=2-$REPLY;}
다음과 같이 사용하십시오.
ls -ldU -- *(o+dir1st)
이렇게하면 다른 옵션 ls
을 ls
사용 하거나 사용하지 않고 다른 명령을 사용 하거나 다음과 같은 다른 패턴에 사용할 수 있습니다.
ls -ldU -- .*(o+dir1st) # to list the hidden files and dirs
또는:
ls -ldU -- ^*[[:lower:]]*(o+dir1st) # to list the all-uppercase files and dirs
를 사용해야하는 경우 다음 bash
과 같습니다.
mll() (
if (($# == 0)); then
dirs=() others=()
shopt -s nullglob
for f in *; do
if [[ -d $f ]]; then
dirs+=("$f")
else
others+=("$f")
fi
done
set -- "${dirs[@]}" "${others[@]}"
fi
(($#)) && exec ls -ldU -- "$@"
)
bash
globbing 한정자가 없거나 glob의 정렬 순서에 영향을 줄 방법이 없거나 glob를 기준으로 nullglob를 설정하는 방법이 없거나 옵션에 대한 로컬 컨텍스트가 있습니다 (서브 쉘을 시작 ()
하지 않고 {}
위 대신 대신 ). .