ls -l –group-directoryories-first (symlink에도 적용) ls좋고 깨끗합니다. ls -l –group-directories-first 그러나

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)

이렇게하면 다른 옵션 lsls사용 하거나 사용하지 않고 다른 명령을 사용 하거나 다음과 같은 다른 패턴에 사용할 수 있습니다.

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 -- "$@"
)

bashglobbing 한정자가 없거나 glob의 정렬 순서에 영향을 줄 방법이 없거나 glob를 기준으로 nullglob를 설정하는 방법이 없거나 옵션에 대한 로컬 컨텍스트가 있습니다 (서브 쉘을 시작 ()하지 않고 {}위 대신 대신 ). .


답변