web-dev-qa-db-ja.com

Unix 'ls'の名前によるソート

名前で ls リストをソートできますか?

112
Devang Kamdar

私の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.

120
Evert

単純なものとして、lssortを組み合わせることができます。ファイル名のリストのみ:
ls -1 | sort

逆順に並べ替えるには:
ls -1 | sort -r

97
Mark

ls from coreutilsは、デフォルトでlocale-awareソートを実行するため、場合によっては驚くべき結果を生成することがあります(たとえば、%foobarおよびquux in LANG=en_US)。 ASCIIbeticalソートが必要な場合は、使用します

LANG=C ls
31
Richard Smith

* 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コマンドに追加します。

17
user491575

注意:「a」は「Z」の後に来る:

$ touch A.txt aa.txt Z.txt

$ ls

A.txt Z.txt aa.txt

8
russian_spy

数値文字列だけが異なるファイルは、この番号で区切り文字の前にあるという条件でソートできます。

この場合、次の構文を使用できます。

ls -x1 file | sort -t'<char>' -n -k2

例:

ls -1 TRA*log | sort -t'_' -n -k2

TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
5
poney

Manページから(bash lsの場合):

-cftuSUXも--sortもない場合、エントリをアルファベット順にソートします。

4
jwoolard

.bashrcファイルのエイリアスを確認してください。

3
Sujit

lsユーティリティは、IEEE Std 1003.1-2001( POSIX.1 )に準拠する必要があります。

22027:現在のロケールの照合シーケンスに従って、ディレクトリオペランドと非ディレクトリオペランドを別々にソートします。

26027:デフォルトでは、フォーマットは指定されていませんが、出力はシンボル名でアルファベット順にソートされます

  • ライブラリ名またはオブジェクト名、-Aが指定されている場合
  • シンボル名
  • シンボルタイプ
  • シンボルの値
  • シンボルに関連付けられているサイズ(該当する場合)
3
kenorb

ls -Xは、lsをより便利なデフォルトにエイリアスした場合に、その目的で機能します。

2
jezzo
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 --
0
James T