
私はしばしば大きなディレクトリ~/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 fff
fff
ファイル ""の最初の行を印刷する方法です。\;
find(1)
カスタムコマンドの終了場所を示します。
をする一部サブディレクトリ.gitignore
には何がありますか?
find . -type d -exec [ -e {}/.gitignore ] \; -printf '%30f ==> ' -exec sed q {}/.gitignore \;
再び私たちは助けを求めました-exec
。現在処理中のサブディレクトリの名前は「」と仮定しますddd
。そのディレクトリに何もない場合は[ -e ddd/.gitignore ]
false と評価されます。テストがfalseと評価された場合は、放棄して次のサブディレクトリに移動します。.gitignore
ddd/
find(1)