1. 概要

この記事では、Linuxでアルファベット順のリストの最後に項目を配置するためのさまざまなアプローチを見ていきます。 たとえば、これはフォルダの並べ替えで発生します。これについては、この記事で扱います。

複数のサブディレクトリとファイルを持つフォルダを扱う場合、それらのいくつかをすばやくチェックすることにのみ関心があるかもしれません。 それらの名前は、それらを直接表示できるかどうか、またはマウスホイールでスクロールする必要があるかどうかを示します。 GUI(グラフィカルユーザーインターフェイス)を使用する場合、通常、これらの目的のフォルダーを画面の上部に表示すると便利です。

ただし、 CLI(コマンドラインインターフェイス)を使用する場合、は端末の行数が制限されており、コマンドプロンプトが下部にあるため、これらを下部に表示します。リストの。 これは、この記事全体で使用する例です。

2. Linuxソーティング

問題の解決策に進む前に、アルファベット順に並べ替えることの意味について説明する必要があります。 文字azよりも進んでいることは明らかです。 しかし、大文字はどうですか? シンボル? 文字の前後に数字が記載されていますか?

ロケール設定により、小数点記号、日付順、曜日名、並べ替え順などの多くのプロパティが決まります。 環境変数LC_ALLは、これらのローカリゼーション設定のほとんどをオーバーライドします。 並べ替えに関連する環境変数はLC_COLLATEです。

LC_COLLATE 変数の可能な値の一部は、POSIXに準拠していません。 LC_COLLATE = en_US.UTF-8 の場合、文字のセット [a、b、A、B] は(コマンド sort を使用して)次のようにソートされます。

$ LC_COLLATE=en_US.UTF-8 sort <<< $'a\nb\nA\nB'
a
A
b
B

ただし、 LC_COLLATE = C を以前と同じ文字セットで使用する場合は、次のようになります。

$ LC_COLLATE=C sort <<< $'a\nb\nA\nB'
A
B
a
b

この記事の残りの部分では、並べ替えの設定が LC_COLLATE = C であると想定します。これにより、並べ替えがバイト単位で行われるようになります。 システムで並べ替えを永続化する場合は、環境変数を設定する必要がある場合があります。

3. ソリューション

特定のファイルまたはフォルダーの順序を実現するために従うことができる3つの異なるソリューションについて説明します。

3.1. 素朴なアプローチ

リストの最後に(要素がそれほど多くない)フォルダーを作成する場合、興味深いオプションの1つは、フォルダーの名前を、そのコンテンツも識別する同義語に変更することですが、その名前は次のように始まります。アルファベットの後半に文字があります。

たとえば、ある方向にArchivesを保存する特定のフォルダーがあるとします。 ls コマンドを使用すると、内容を確認できます。

$ ls -1
Archives
Downloads
Music
Photos

ディレクトリ間を移動しているときに、フォルダがそこにあることをすばやく確認したい場合があります。 したがって、( mv コマンドを使用して)名前を Records に変更すると、シェルプロンプトが追加の入力を待機する直前に表示されます。

$ mv Archives Records
$ ls -1
Downloads
Music
Photos
Records
$ 

このようにして、奇妙な命名規則や従来とは異なる文字を使用せずに、フォルダー内のコンテンツを再編成できます。

3.2. 簡単なアプローチ

多くのフォルダとファイルで非常に混雑したディレクトリがある場合、前のアプローチは機能しません。 したがって、別の解決策は、フォルダ名のイニシャル(またはイニシャル)を変更して、ディレクトリの最初または最後に表示されるようにすることです。

Linuxでは、フォルダとディレクトリの命名に使用できない予約済みバイトが2つだけあります。 それらは0(nullのASCII値)と0x2f(スラッシュに相当するASCII値)です。 ただし、Windowsなどの他のオペレーティングシステムからもファイルシステムにアクセスできるようにする場合は、円記号、アスタリスク(スター)、疑問符などの追加の予約値があることに注意してください。

大文字は小文字の前にソートされるため、リストされる最後の文字はzです。 したがって、フォルダの実際の名前の前に特定の数の z を追加すると、カスタムディレクトリの並べ替えをシミュレートできます。

$ ls -1
Folder
ZZFolder
ZzFolder
zZFolder
zzFolder

もう1つのオプションは、最後の文字ではなく、ASCIIで使用可能な記号の最後の記号(チルダ)を取得することです。 実際、次のリストは、ソートされたすべての文字を示しています(照合 LC_COLLATE = C に従って):

!"#$%&'()*+,-.h/0123456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~

したがって、前の例の zzFolder の後に、 z より後にソートされた文字を名前の前に付けると、フォルダーを作成できます。

$ ls -1
Folder
ZZFolder
ZzFolder
zZFolder
zzFolder
'~Folder'
'~ZFolder'
'~zFolder'

3.3. 特殊文字

前のセクションにリストされているものとは別に他の文字がありますが、それらはASCIIセットの外にあります。 これらはUnicodeセットに属しており、ASCIIセットの後にソートされます。目立たない外観で最もよく使用される文字のいくつかは次のとおりです。

  • は真ん中のドット(U + 00B7)
  • ÷は除算記号(U + 00F7)
  • Ɩは大文字のイオタ文字(U + 0196)

これらはすべてのキーボードで使用できるわけではなく、取得が複雑になる場合があります。 また、はグラフィカルユーザーインターフェイスで使用するのが一般的ですが、コマンドラインインターフェイスで作業するときに問題が発生する可能性があります。 ただし、使用すると、前のディレクトリは次のようになります。

$ ls -1
Folder
ZZFolder
ZzFolder
zZFolder
zzFolder
'~Folder'
'~ZFolder'
'~zFolder'
·Folder
÷Folder
ƖFolder

これらの記号を表示するには、端末がUnicodeを処理できる必要があります。 これらの特殊文字は、一貫性のない結果を返すため、完全に安全に使用できない場合があります。たとえば、Unicode文字を処理できないスクリプトを壊す傾向があります。

最後に、私用キャラクターもあります。 ただし、メリットよりもデメリットが多いため、採用はお勧めしません。ここでは説明しません。

4. 結論

この記事では、アルファベット順に並べ替えるさまざまな方法があることを最初に示しました。 次に、特定のフォルダまたはファイルをディレクトリリストの上部または下部に配置するために一般的に使用される3つのソリューションについて説明しました。 どのソリューションでも、大文字は小文字の前に来ること、および‘!’であることを覚えておく必要があります。 が最初の記号で、‘〜’が最後の記号です。