GNU/Linux >> Linux の 問題 >  >> Linux

Bash Sort を使用してボスのようにファイルを並べ替える

ファイルを整理して操作を実行する方法を探していますか?プログラミングでは、ファイルのリストなどのデータを並べ替える必要がある場合が数多くあります。 Bash sort でファイルを並べ替える と ls コマンドは物事を整理するのに役立ちます。

このチュートリアルでは、ファイルとファイル コンテンツの並べ替えの基礎を学びます。

並べ替えを始めましょう!

前提条件

このチュートリアルでは Ubuntu 20.04 を使用していますが、どの Linux ディストリビューションでも機能します。

ファイルをアルファベット順に Bash で並べ替える

Linux でファイルを並べ替える方法はたくさんありますが、ファイルをアルファベット順に並べ替える最も一般的な方法に取り掛かりましょう。

ターミナルを起動して ls -l を実行します 以下のコマンドを実行して、ディレクトリ内のファイルのリストを昇順で取得します。 -l フラグは ls を示します 返された出力を長いリスト形式で出力するコマンド。

ls -l

デフォルトでは、ls コマンドは、ファイルを昇順でリストします。ソート順を逆にするには、-r を渡します。 ls -l へのフラグ コマンド、次のように:ls -lr . -r を渡す ls -l へのフラグ コマンドは、このチュートリアルの他の例に適用されます。

Bash Sort を使用してファイルをサイズ順に並べ替える

ファイルをアルファベット順に並べ替える代わりに、ファイル サイズでファイルを並べ替えることができます。ファイルをサイズで並べ替えると、リスト内の最小または最大のファイルを優先して表示する場合に便利です。

ファイルをサイズ順に並べ替えるには、-S を渡します。 ls に伝えるフラグ コマンドを使用して、ファイルのリストをファイル サイズで並べ替えます。

以下のコマンドを実行して、ファイルを一覧表示します (ls ) 長いリスト形式 (-lS) でファイル サイズによって並べ替えられます ).

ls -lS

以下では、ファイルをサイズの降順 (サイズが大きいものから小さいもの) に並べ替えたコマンドを確認できます。

並べ替え順序を逆にするには (最小から最大)、-r を追加します。 次のようなフラグ:ls -lSr

Bash Sort を使用して変更時刻でファイルを並べ替える

サイズによるファイルの並べ替えからさらに進むと、ファイルが変更された時刻でファイルを並べ替える必要があるユースケースに遭遇する可能性があります。たとえば、作成したファイルの名前を忘れてしまい、そのファイルを最後に変更した時刻しか覚えていません。

-t の場所で以下のコマンドを実行します パラメータは ls を伝えます 変更時刻でファイルをソートするコマンド。

ls -lt

ファイル拡張子によるファイルの並べ替え

特定のファイル タイプのファイルを探している場合、ファイル拡張子でファイルを並べ替えることが理想的なソリューションです。

以下のコマンドを実行して、ファイルを一覧表示します (ls ) を作業ディレクトリに置き、拡張子 (-lx) に基づいて並べ替えます ).

ls -lX

以下のコマンドは、同じ拡張子を持つファイルを名前に基づいて昇順で並べ替えたことに注意してください。

テキスト ファイル内のコンテンツの並べ替え

ここまでで、ディレクトリ内のファイルをソートするさまざまな方法を学習しました。 ls から焦点を移す コマンド、sort を実行してみてください 指図。 sort コマンドは、追加するフラグに応じてファイルの内容を並べ替えます。ただし、最初に、変更するコンテンツを含むファイルが必要です。

以下のコマンドを実行して、~/data/fruits.txt という名前のテキスト ファイルを作成します。 果物の名前が入っています。 -e フラグを使用すると、バックスラッシュを解釈して各単語を新しい行に書き込むことができます (\n ).

echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt

sort に対して以下のコマンドを実行します。 fruits.txt の各単語 .

sort fruits.txt

以下では、ファイルの内容が昇順でソートされていることがわかります。

フラグがない場合、sort コマンドは、デフォルトでファイルの内容を昇順にソートします。ソート順を逆にするには、-r を追加します 次のように並べ替えコマンドにフラグを設定します:sort -r fruits.txt . -r を追加して逆順にソートする フラグは、このチュートリアルの他の例に適用されます。

テキスト ファイル内の数値リストの並べ替え

数字を並べ替えるコマンドは、ファイル内のテキストを並べ替えるのと似ていますが、-n を追加します。 代わりにフラグを立てます。最初にファイルを作成して、ファイルのコンテンツを数値順に並べ替える方法を示しましょう。

以下のコマンドを実行して、~/data/scores.txt という名前のファイルを作成します 乱数を含み、それぞれが新しい行に含まれています。

echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt

以下のコマンドを sort に対して実行します。 数字 (-n ) ~/data/scores.txt 内 ファイル。

sort -n scores.txt

以下に、最小から最大の番号までの行にリストされた番号を示します。

テキスト ファイル内のバージョン番号のリストの並べ替え

おそらく、並べ替えたいテキスト ファイルにバージョン番号のリストがあるとします。その場合、--version-sort を追加します オプションでうまくいきます。

--version-sort がどのように機能するかを示す オプションが機能する場合は、最初にテキスト ファイルを作成してください。

以下のコマンドを実行して、~/data/versions.txt という名前のテキスト ファイルを作成します。 ランダムなバージョン番号がリストされ、それぞれが新しい行に表示されます (\n ).

echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt

sort に対して以下のコマンドを実行します。 バージョン番号 (--version-sort ) versions.txt 内 ファイル。 --field-separator オプションは sort を伝えます 各バージョンの番号をドットで区切るコマンド (. )。フィールド区切り文字は、テキスト ファイルにリストされているバージョンの数字を区切る任意の文字に変更できます。

sort --version-sort --field-separator=. versions.txt

ファイル拡張子を介してファイルを検索およびソートするための Bash Sort

単一のコマンドを実行しています (ls または sort ) 前の例では。ただし、プログラミングでは、2 つ以上のコマンドを一緒に使用する必要がある場合がよくあります。どのように?あるコマンドを別のコマンドにパイプライン処理する。

以下のコマンドを実行して find にします すべてのマークダウン ファイル (-iname "*.md" ) 作業ディレクトリ (.) )、アルファベットの降順 (sort -r) で並べ替えます。 )。 "*.md" を変更して、他のファイルを見つけて並べ替えてみてください 別のファイル拡張子に。

find . -iname "*.md" | sort -r

ソートされた出力をコンソールの標準出力ではなくテキスト ファイルに保存する場合は、--output を追加します。 オプション、次のように:find . -iname "*.md" | sort -r --output=sorted.txt . --output オプションは sort を伝えます コマンドを使用して、ファイルのソート済みリストの出力ファイルを作成します。

結論

この記事の目的は、Linux マシンで Bash コマンドを使用して並べ替えるさまざまな方法について説明することでした。ファイルのリストを並べ替え、ファイルの内容を並べ替える方法を学習しました。さらに、より複雑なファイルの並べ替えのためにさまざまなコマンドをパイプライン処理する方法も知っておく必要があります。

この新たに発見された知識を足がかりとして、ファイル リストとファイル コンテンツの並べ替えを自動化するスクリプトを作成してみませんか?


Linux
  1. Linuxの/tmpディレクトリを上司のように管理する

  2. rsyncを使用してファイルを同期する

  3. bash での一時ファイルの作成

  1. 自動化のためのBashの使用

  2. 最大のファイルまたはディレクトリを見つけますか?

  3. Sort --parallel は並列化されていません

  1. Lsを使用してアクセス許可でファイルを並べ替える方法は?

  2. Readynas Duo V1でファイルをアルファベット順のフォルダに並べ替えるBashスクリプト?

  3. Bashでのケースステートメントの使用