두 가지 질문이 있습니다. 먼저, 파일과 디렉터리를 나열하지만 디렉터리를 먼저 나열하는 명령은 무엇입니까?
두 번째 질문: 파일 목록을 단일 디렉터리에 복사하고 싶지만 대상 디렉터리가 명령의 첫 번째 파일 이름으로 되어 있습니다.
답변1
GNU가 있나요?
Gnu 버전 ls
에는 --group-directories-first
.cp
-t
GNU가 없나요?
gnu 가 없는 시스템에서 ls
가장 좋은 옵션은 / 및 적절한 옵션을 find
사용하여 연속적으로 두 번 호출하는 것입니다.-maxdepth n
-mindepth n
-type t
find . -maxdepth 1 -mindepth 1 -type d
find . -maxdepth 1 -mindepth 1 \! -type d
파일을 복사하려면 먼저 target을 사용하여 첫 번째 매개변수를 저장하는 스크립트를 작성한 다음 를 사용 shift
하고 매개변수를 끝에 추가해야 합니다.
#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"
주의 깊은!
함께 사용하려는 경우 알아야 할 사항은 무엇입니까? 즉, 또는 (아마도 사용하여 ) find
에서 목록을 수집 하고 (또는 래퍼) 에 전달합니다.ls
xargs
cp
cp
위험은 파일 목록을 구문 분석하는 데 있습니다.(기본적으로 파일 이름에는 개행 문자와 같은 문자가 포함될 수 있으며 이로 인해 스크립트가 엉망이 될 수 있습니다.) 구체적으로 find
와 옵션 및 -exec
의 옵션 을 살펴보세요 .-print0
xargs
-0
디렉토리 트리를 효율적으로 복사하기 위한 대체 도구입니다.
사용을 고려해 볼 수도 있습니다.rsync
반대로 작업을 더 쉽게 만들어주는 많은 기능이 있습니다.
답변2
제공하다세게 때리다그리고다루기 힘든
~/.bashrc 또는 ~/.zshrc에 별칭을 추가하세요.
# Colorize the ls output ##
alias ls='LC_COLLATE=C ls -h --group-directories-first --color=auto'
또는 ZSH가 있는 경우 다음을 사용할 수 있습니다."케이"유용
k -h --group-directories-first
항원과 함께 설치하고 다음을 ~/.zshrc에 넣으세요.
antigen bundle reduxionist/k --branch=add-sort-options
답변3
먼저 GNU가 아닌 디렉토리를 나열하십시오 ls
.
ls -l | sort
여기에는 심볼릭 링크, 소켓 및 파이프(물론 적절하게 그룹화됨)와 같은 다른 모든 이상한 항목이 나열되지만 이러한 항목이 매우 드물다는 점을 고려하면 문제가 되지 않습니다. 그렇지 않으면 필터는ls -l | grep '^(-|d)' | sort
답변4
색상이 지정된 폴더와 파일 이름이 있는 내 버전은 여러 가지 개선 사항이 포함된 @clarkttfu의 솔루션을 기반으로 합니다. MacOS에서 테스트되었습니다.
ls -lh | sort -r | awk 'NF==9 { if ($1~/^d/) { printf $1 "/" $2 "/" $3 "/" $4 "/" $5 "/" $6 " " $7 "/" $8 " " "\033[1;34m" $9 "\033[0m" "\n" } else { printf $1 "/" $2 "/" $3 "/" $4 "/" $5 "/" $6 " " $7 "/" $8 " " "\033[1;32m" $9 "\033[0m" "\n" } }' | column -t -s"/"
또는 별칭을 만듭니다.
alias ll='ls -lh | sort -r | awk '\''NF==9 { if ($1~/^d/) { printf $1 "/" $2 "/" $3 "/" $4 "/" $5 "/" $6 " " $7 "/" $8 " " "\033[1;34m" $9 "\033[0m" "\n" } else { printf $1 "/" $2 "/" $3 "/" $4 "/" $5 "/" $6 " " $7 "/" $8 " " "\033[1;32m" $9 "\033[0m" "\n" } }'\'' | column -t -s"/"'