답변:
의 gnu 버전 ls
은 --group-directories-first
입니다. 그리고 cp
있다 -t
.
gnu 's가없는 시스템 에서 / 와 적절한 옵션 ls
을 두 번 연속 호출하는 것이 가장 좋습니다 .find
-maxdepth n
-mindepth n
-type t
find . -maxdepth 1 -mindepth 1 -type d
find . -maxdepth 1 -mindepth 1 \! -type d
대상을 먼저 사용하여 파일을 복사하려면 첫 번째 인수를 저장 한 다음을 사용 shift
하고 인수를 끝에 추가 하는 스크립트를 작성 해야합니다.
#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"
당신이 함께 사용하는 방법에 대한 계획이 있다면 -에서 목록을 수집,이다 find
또는 ls
(아마도 사용하여 xargs
)과에 전달 cp
(또는 cp
래퍼), 당신은 무엇을 알고 있어야 위험 파일의 목록을 구문 분석에 거짓말 (기본적으로, 파일 이름이 수 스크립트를 망칠 수있는 개행 문자와 같은 문자를 포함합니다. 특히, 조사 find
의 -exec
및 -print0
옵션 xargs
의 -0
옵션을 선택합니다.
rsync
대신 사용하는 것이 좋습니다. 작업을 쉽게 할 수있는 많은 기능이 있습니다.
--group-directories-first
).
ls --version
당신이 가지고있는 것을 찾을 수 있습니다.
GNU 이외의 디렉토리를 먼저 나열 ls
:
ls -l | sort
이것은 심볼릭 링크, 소켓 및 파이프와 같은 다른 이상한 것들을 모두 나열하지만 (물론 그룹화 됨) 문제가되지 않아야한다는 것을 고려하는 것은 매우 드 rare니다. 그렇지 않으면 필터는ls -l | grep '^(-|d)' | sort
sort -r
.
bash 및 zsh에서 작동합니다.
~ / .bashrc 또는 ~ / .zshrc에 별칭을 추가하십시오.
# Colorize the ls output ##
alias ls='LC_COLLATE=C ls -h --group-directories-first --color=auto'
또한 ZSH가있는 경우 "k" 유틸리티를 사용할 수 있습니다
k -h --group-directories-first
~ / .zshrc에 다음을 넣어서 항원으로 설치하십시오.
antigen bundle reduxionist/k --branch=add-sort-options
GNU가 아닌 경우 awk는 다른 모든 필드를 필터링 할 수 있습니다.
ls -l | sort -r | awk 'NF==9 { if ($1~/^d/) { print $9 "/" } else { print $9 } }'
ls -l
9 개의 필드를 포함해야합니다.결과는 다음과 ls -1
같지만 디렉토리를 먼저 넣습니다.
node_modules/
src/
e2e/
angular.json
tslint.json
package.json
README.md
ls 매뉴얼 페이지의 "긴 형식"에 따르면 다른 파일 형식이 포함 된 경우 출력 순서는 다음과 같아야합니다.
s Socket link.
p FIFO.
l Symbolic link.
d Directory.
c Character special file.
b Block special file.
- Regular file.
편리한 bash 함수 (.bash_profile 또는 .bashrc에 넣으십시오) :
function l1() {
ls -l $* | sort -r | awk 'NF==9 { if ($1~/^d/) { print $9 "/" } else { print $9 } }'
}
ls
이--group-directories-first
스위치를.