"ls"などのCLIツールがありますが、ディレクトリに関する追加情報も表示します(例:README.mdの最初の行)

私はしばしば大きなディレクトリ~/code内に別のディレクトリに小さなプロジェクトを作成します。しかし、時間が経つにつれて、私はこのディレクトリの内容を忘れてしまい、残念ながらユースdirnameケースを解読するだけでは十分ではありませんでした。

ls各項目に関する簡単な情報も表示するように拡張(または他のユーティリティのエイリアス)する方法はありますか?私はそれがディレクトリ名と共にプロジェクトディレクトリにあるREADME.mdの数行を表示すると想像しています。

ベストアンサー1

そのようなツールはありませんが、これはUNIXなので簡単に作成できます。 :-)


周囲にファイルがないので、各サブディレクトリの下のファイルをREADME.md使用して最初の行を印刷します。.gitignore

find . -type d -printf '%30f ==> ' -exec sed q {}/.gitignore \;

出力例:

                   control-DBs ==> autogen.h
                         basic ==> flarp.exe
                    postgresql ==> libpgstore.a
                            ui ==> .DS_Store
                       plugins ==> *.*~

どのように動作しますか?

  • -type d:サブディレクトリのみを探します。
  • printf '%30f ==> '-printfファイルに関するさまざまな情報を印刷するための複数のコードを許可します(技術的には、ディレクトリはファイルタイプです。)を処理中です。ls(1)より簡単なオプションを使用して出力をシミュレートするのに十分なコードがあります。を参照してman findください。https://man7.org/linux/man-pages/man1/find.1.html完全なリストは次のとおりです。
    • %f: 基本名
    • %s:サイズ(バイト)
    • %m:権限(モードビットとも呼ばれる)
  • -exec sed q {}/.gitignore \;find(1):ここでは、処理中の各サブディレクトリに対して実行するカスタムコマンドを提供します。
    • {}ファイルのパスを示します。
    • sed q ffffffファイル ""の最初の行を印刷する方法です。
    • \;find(1)カスタムコマンドの終了場所を示します。

をする一部サブディレクトリ.gitignoreには何がありますか?

find . -type d -exec [ -e {}/.gitignore ] \; -printf '%30f ==> ' -exec sed q {}/.gitignore \;

再び私たちは助けを求めました-exec。現在処理中のサブディレクトリの名前は「」と仮定しますddd。そのディレクトリに何もない場合は[ -e ddd/.gitignore ]false と評価されます。テストがfalseと評価された場合は、放棄して次のサブディレクトリに移動します。.gitignoreddd/find(1)

おすすめ記事