ls -l --group-directories-first (심볼릭 링크에서도 작동)

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.

답변1

아니요, 하지만 을 사용하는 경우 zsh다음을 수행할 수 있습니다.

mll() {
  (($#)) || set -- *(N-/) *(N^-/)
  (($#)) && ls -ldU -- $@
}

다음과 같이 전역 정렬 순서를 정의할 수도 있습니다.

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와일드카드 한정자나 와일드카드 정렬 순서에 영향을 주는 방법, 와일드카드별로 null 와일드카드를 빈 와일드카드로 변환하는 방법, 옵션이 있는 로컬 컨텍스트(하위 쉘을 시작하는 것이 아닌 위의 방법 ()대신 {}) AFAIK.

관련 정보