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

find コマンドのデフォルトのソート順

解決策 1:

find アイテムがディレクトリ エントリ内に格納されている順序でディレクトリ ツリーをトラバースします。これは、同じマシン上で実行ごとに(ほとんど)一貫しており、削除がない場合は基本的に「ファイル/ディレクトリの作成順序」になります。

ただし、一部のファイル システムでは、圧縮操作の一部として、またはエントリのサイズを拡張する必要がある場合に、ディレクトリ エントリの順序が変更されるため、「生の」順序が時間の経過とともに変化する可能性は常にわずかです。一貫した順序が必要な場合は、出力を追加の並べ替えステージにフィードします。

解決策 2:

find からの特定の出力順序に依存するべきではありません 代わりに sort を使用する必要があります および順序を明確に制御するその他の手段。

解決策 3:

私は 1984 年から 1991 年からそれぞれ UNIX/Linux で働いており、最初に教わったコマンドは find でした。 Linux/GNU は現在の find コマンドに必要なものをほとんどすべて組み込んでいるので、いろいろと試してみてください。

検索結果の並べ替えに役立つヒントをいくつか紹介します。 -printf オプションを使用すると、より複雑な並べ替えやファイル情報の表示を可能にする多くのオプションが提供されます。こんなお悩みに最適です。それを試して、何がうまくいくかを確認してください。 -printf を使用すると、必要に応じて結果をカスタマイズして区切ることができます。これは、結果の後処理が必要な場合に非常に役立ちます。これが誰かの役に立てば幸いです。

<オール>
  • -ls を使用してファイル名で並べ替えたい場合は、11 番目のフィールドがファイル名であるため、次のように実行できます。 sort -k オプションは、複数のフィールドでソートすることもできます。

    /path -ls | を見つけます。並べ替え -k11

  • より細かく制御したい場合、つまり日付/時刻で昇順または降順でソートする場合は、-printf "" オプションを使用します。詳細についてはマニュアルを参照してください。ただし、以下は非常に正確な小数秒で出力される例です。

  • 日付/時刻の例:2016-09-17+12:09:57.9013929800

    find /path -printf "%T+ %p\n" | sort -n # Ascending
    
    find /path -printf "%T+ %p\n" | sort -nr # Descending
    

    日付/時刻文字列に文字を使用せずにこれを行う別の方法は次のとおりです。

    日付/時刻の例:20160917120013.8101685040

    find /path -printf "%AY%Am%Ad%AH%AM%AS %p\n" | sort -n
    

    Linux
    1. 検索コマンドの後にMvコマンドを統合する方法は?

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

    3. Linux での find コマンドの例

    1. 検索:コマンドが見つかりません

    2. bash での並べ替え

    3. Linux ソートのデフォルトの順序は何ですか?

    1. LinuxでデフォルトゲートウェイIPを見つける方法

    2. Linux での sort コマンドの例

    3. Linux find コマンド - 進行状況を表示