`ls`の出力をソートする方法は?


14

titlepage_19.pdfの前にtitlepage_1.pdfでソートされたこの出力を表示することはできますか?

$ ls
allTitlepage.pdf         titlepage_12.pdf  titlepage_19.tex  titlepage_26.pdf  titlepage_32.tex  titlepage_4.tex
allTitlepage.tex         titlepage_12.tex  titlepage_1.pdf   titlepage_26.tex  titlepage_33.pdf  titlepage_5.pdf
assignment.pdf           titlepage_13.pdf  titlepage_1.tex   titlepage_27.pdf  titlepage_34.pdf  titlepage_5.tex
assignment.tex           titlepage_13.tex  titlepage_20.pdf  titlepage_27.tex  titlepage_34.tex  titlepage_6.pdf
graphicsAssignment2.pdf  titlepage_14.pdf  titlepage_20.tex  titlepage_28.pdf  titlepage_35.pdf  titlepage_6.tex
graphicsAssignment2.tex  titlepage_14.tex  titlepage_21.pdf  titlepage_28.tex  titlepage_35.tex  titlepage_7.pdf
README.md                titlepage_15.pdf  titlepage_21.tex  titlepage_29.pdf  titlepage_36.pdf  titlepage_7.tex
thesisTitlepage.pdf      titlepage_15.tex  titlepage_22.pdf  titlepage_29.tex  titlepage_36.tex  titlepage_8.pdf
thesisTitlepage.tex      titlepage_16.pdf  titlepage_22.tex  titlepage_2.pdf   titlepage_37.pdf  titlepage_8.tex
titlepage_0.pdf          titlepage_16.tex  titlepage_23.pdf  titlepage_2.tex   titlepage_37.tex  titlepage_9.pdf
titlepage_0.tex          titlepage_17.pdf  titlepage_23.tex  titlepage_30.pdf  titlepage_38.pdf  titlepage_9.tex
titlepage_10.pdf         titlepage_17.tex  titlepage_24.pdf  titlepage_30.tex  titlepage_38.tex  titlepage_one.pdf
titlepage_10.tex         titlepage_18.pdf  titlepage_24.tex  titlepage_31.pdf  titlepage_3.pdf   titlepage_one.tex
titlepage_11.pdf         titlepage_18.tex  titlepage_25.pdf  titlepage_31.tex  titlepage_3.tex   titlepage_two.tex
titlepage_11.tex         titlepage_19.pdf  titlepage_25.tex  titlepage_32.pdf  titlepage_4.pdf

3
タイトルは複製のように見えるので、より具体的である必要があります(とにかくそうかもしれません)。
ピーターモーテンセン

回答:


31

スイッチ-v [テキスト内の自然な並べ替え(バージョン)番号]を使用します

ls -v

単一の列が必要な場合はls -1v
Vijay

13

出力はソートされます。lsマンページによると:

-cftuvSUXも--sortも指定されていない場合、エントリをアルファベット順にソートします。

ただし、さらに先に進みたい場合は、少なくとも2つのオプションがあります。

オプション1- lsスイッチの並べ替え

man ls並べ替えに使用できる多数のスイッチについて説明します。具体的には、lsのマニュアルページには次のように記載されています。

なし(-U)、サイズ(-S)、時間(-t)、バージョン(-v)、拡張子(-X)

あなたの場合、「バージョン」ソート(-v)が必要です。 ただし、これはblahblah-X.Y.Z-A完全にあなたが望むものではないかもしれない配置持つものもソートするので注意してください。GNUのバージョンsortの説明も参照してください。

オプション2-ソートコマンドへのパイプ

パイプ|を使用して、出力を別のコマンドに送信できます。たとえば、番号を付けたファイルがある場合に便利な、他のさまざまな方法でソートできるコマンド です。出力は1行ごとのファイルであることをスイッチが保証されます。sortls -1 | sort -n-1

同様に、sedまたはのようなものを使用してソートを支援するために出力を操作できますawk

この種の質問に答える方法はたくさんあります。Linuxシェルのチュートリアルが役立つ場合があります。

*(そこで行ったことを参照してください:-p)


6

コメントですでに指摘したように、出力既にソートされていますが、数字ではなく文字でソートされています。あなたはパイプに出力したいことlsを通じてsort、文字列内の数字でソートするとスイッチがあります。

ls | sort --version-sort

マンページから:

-V, --version-sort
         natural sort of (version) numbers within text

欠点:発行すると、現在の画面に収まるだけの列数を持つlsファイルがテーブルに出力されます(投稿で示したように)。しかしls、出力がファイルまたはパイプにリダイレクトされていることに気づいた場合(のようにls | sort)、出力が行ごとに処理されることを前提としているためls、ファイルを1列だけで印刷します(別名ファイルごと)他のプログラム(などsort)によって。したがって、の出力はls | sort -V、複数の列を持つテーブルではなく1つの列なります。それを回避する方法については、@ vijayのシンプルだが完璧な答えを参照してください。


1
出力をcolumn
David Conrad

0

ls -l :ディレクトリのファイルを垂直にリストしますが、特定の順序ではありません。

ls -l | sort -k 3-k 3前のコマンドの出力を3番目の列でソートします。

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