「インテリジェント」ではなく、通常のASCIIコードでソートするように「ls」に指示します


13

ファイルがいくつかあり、次のlsように並べ替えます。

a
_b
c

しかし、私はしたいです

_b
a
c

どうやってやるの?


2
なぜだろうか?
RolandiXor

2
アンダースコアを使用して、トップに移動する必要がある特別なディレクトリを示します。私のプロジェクトフォルダには、proj_a、proj_b、_old_projectsがあります。このフォルダーがo-projects内にある場合は使用できません。
マーティンUeding

回答:


9

1回限りのコマンドとして、これを行うことができます。

LC_COLLATE=C ls

またはexport LC_COLLATE="C"、.bashrcに追加して永続的にすることができます(予期しない結果が他の場所でソートされる可能性があります)。

Ubuntuフォーラムの詳細。


1
副作用がないように、lsをエイリアスするだけだと思います。
マーティンUeding

これは私には機能しません。これを取得します-> paste.pocoo.org/show/403333(ドイツ語ですが重要ではありません)
-dAnjou

2
@dAnjou LC_COLLATE=Clsは、従来のPOSIXソート順を設定します。これは、アンダースコアの前に大文字が来るASCIIによるものです。アンダースコアを大文字の前にソートするには、ボンネットの下に入り、/ usr / share / i18n / localesの下にカスタムロケール定義を作成する必要があります。
ミスターベン

2
これは過去に機能した可能性がありますが、Ubuntu 12.04では機能していません。
ミケル

1
Ubuntu 14.04の時点でLC_COLLATE=C lsは機能しませんが、LC_ALL=C ls機能します。
-jwodder

6

これを行うための組み込みの方法がない場合に備えて、次の単純な置換を使用できますsort

#!/usr/bin/env python

import sys

for i in sorted(sys.stdin):
    sys.stdout.write(i)

たとえば、それを保存し/bin/pysortて実行可能にし(sudo cp whatever.py /bin/pysortおよびsudo chmod a+x /bin/pysort)、次のように実行しますls | pysort

stefano@lenovo:~/t$ ls | pysort
_b
a
c

1
私はおそらくそれを入れますが~/bin、素晴らしいフォールバックでしょう。ファイル名に改行が含まれているとlsの出力が奇妙になる可能性があるため、Python内でグロビングを使用する方がおそらく良いでしょう。
マーティンUeding

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.