回答:
のgnuバージョンはls
has --group-directories-first
です。そしてcp
持ってい-t
ます。
gnuを持たないシステムでは、適切なオプションを使用ls
しfind
て-maxdepth n
/ -mindepth n
を2回連続して呼び出すのが最善の策-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
これには、シンボリックリンク、ソケット、パイプなどの他の奇妙なものもすべてリストされます(もちろん、適切にグループ化されます)が、問題ではないものを考えると非常にまれです。そうでなければ、フィルターは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
以下のためにzsh
、完了リストの、あなたが設定することができますlist-dirs-first
にスタイルをtrue
最初に表示されるディレクトリの。あなたの~/.zshrc
:
zstyle ':completion:*' list-dirs-first true
(ここでそれをサポートするすべての補完ウィジェットとすべてのコマンドに適用されます。必要に応じて制限できます。zstyle
詳細についてはドキュメントを参照してください)
まだ実行していない場合はcompinstall
、同様に実行して、色付きの補完リスト、説明など、その他のすべてのグッズを取得してください。
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 manページの「The Long Format」によると、他のファイルタイプが関係する場合、出力順序は次のようになります。
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
スイッチを。