2つの質問があります。まず、ファイルとディレクトリを一覧表示しますが、ディレクトリを最初に一覧表示するコマンドは何ですか?
2番目の質問:ファイルのリストを単一のディレクトリにコピーしたいのですが、ターゲットディレクトリはコマンドの最初のファイル名になっています。
答え1
GNUはありますか?
Gnuバージョンls
では。--group-directories-first
cp
-t
GNUはありませんか?
gnu を持たないシステムでls
最良のオプションは、/ および適切なオプションをfind
使用して連続して 2 回呼び出すことです。-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"/"'