lsリストを名前でソートできますか?
lsリストを名前でソートできますか?
回答:
私のlsはデフォルトで名前でソートします。何を見てるの?
man ls
状態:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
ls
-c1
指定された場合、並べ替えを行いません。それを行う方法はありますか?(--sort=name
動作しないようです)
ls -la
、i see:.bashrc - can - .config - Downloads - .local - tmp
、sort be nameは次のようになります:.bashrc - .config - .local - Downloads - can - tmp
簡単なものとして、lsとsortを組み合わせることができます。ファイル名のリストのみの場合:
ls -1 | ソート
それらを逆の順序で並べ替えるには:
ls -1 | ソート-r
ls | sort -n
1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; 2.10.2より前の2.10.15をご覧ください。
ls -1r
です。
ls
coreutils
行うロケール認識したがって、デフォルトでソート、および(例えば、いくつかの場合には驚くべき結果を生み出すことができる%foo
との間にソートしますbar
とquux
でLANG=en_US
)。ASCII順のソートが必要な場合は、
LANG=C ls
LANG
ソート動作に影響を与えます。この投稿は私を大きく助けます!
?
は機能しますが、出力がターミナルである場合、すべての非ASCII文字に対して出力されます(lsの悪い機能は、ターミナルに出力されるかどうかをチェックし、パイピング時に機能します)。これをcatへのパイプで「修正」し、C.UTF-8
ロケールを使用し(システムがサポートしている場合)、-b
フラグを使用できます。さらに良いことに、使用しないls
`、すべてでより有効に利用する
ls
enダッシュの前にハイフンをソートします。
* nixツールの優れた点は、それらを組み合わせることができることです。
ls -l | sort -k9,9
の出力は次のls -l
ようになります
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
したがって、ファイル名である9,9
列9
まで列を並べ替えます9
。停止する場所を指定する必要があります。この場合は同じ列です。列はで始まります1
。
また、大文字と小文字を無視したい場合は--ignore-case
、sortコマンドに追加してください。
-k9,9
意味ですか?
9
を同じ列に並べ替えること9
です。通常のls
出力は次のようになります:drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
したがって、列9はファイル名です。大文字と小文字を区別しない場合は、--ignore-case
on sortを使用します。
注意:「a」は「Z」の後に来る:
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normal
ここで解決策を試します。
manページから(bash lsの場合):
-cftuSUXも--sortもない場合は、エントリをアルファベット順にソートします。
which ls
bashに組み込みのlsがあったとしても成功します。むしろ、builtin ls
bashで行うと、エラーが発生します。
which
常にパスを返します。type ls
シェルが何を考えてls
いるか(組み込み、関数、実行可能ファイル)を判別するために使用します。
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --