tree
コマンドはフォルダの構造を出力します。ドキュメント作成等の場合において便利なツールです。しかし、特定のフォルダを除きたい場合はてこずります。
tree
コマンドは-P
と-I
のパラメータを提供しテイルのですが、これらはファイル名のパタンを認識するもので、「/」が入っている長いパスには通用しません。ここで工夫を加えます。
ステップは
tree
にフルパスを出力させます。grep
等で除きたいパスを取り払います。- パスの部分を消します。
具体的に見てみましょう。ここでスペースを節約するためにフォルダのみを取ります。
例えば、gems/doc/*
のすべてを除きたい。
普通のtree
コマンドにフォルダを出力させては、下記のようなものになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# tree -d . |-- applications |-- gems | |-- build_info | |-- cache | | |-- activesupport-5.0.0.gem | | |-- rack-2.0.1.gem | | `-- rubygems-update-2.6.6.gem | |-- doc | | |-- actionmailer-4.0.0 | | |-- actionmailer-4.2.7 | | |-- actionpack-4.0.0 | | |-- actionpack-4.2.7 | | |-- actionview-4.2.7 ...... |
フルパスを出力させれば:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# tree -df . |-- ./applications |-- ./gems | |-- ./gems/build_info | |-- ./gems/cache | |-- ./gems/doc | | |-- ./gems/doc/actionmailer-4.0.0 | | |-- ./gems/doc/actionmailer-4.2.7 | | |-- ./gems/doc/actionpack-4.0.0 | | |-- ./gems/doc/actionpack-4.2.7 | | |-- ./gems/doc/actionview-4.2.7 ...... |
gems/doc/*
を取り除きます:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# tree -df | fgrep -v ./gems/doc . |-- ./applications |-- ./gems | |-- ./gems/build_info | |-- ./gems/cache | |-- ./gems/extensions | |-- ./gems/gems | | `-- ./gems/gems/rubygems-update-2.6.6 | | |-- ./gems/gems/rubygems-update-2.6.6/bin | | |-- ./gems/gems/rubygems-update-2.6.6/bundler | | | |-- ./gems/gems/rubygems-update-2.6.6/bundler/exe | | | |-- ./gems/gems/rubygems-update-2.6.6/bundler/lib ...... |
最後に、「./gems/gems/rubygems-update-2.6.6
」のような前綴りを消します。これは正規表現の出番です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# tree -df | fgrep -v ./gems/doc | sed -r 's%\./.*/%%g' . |-- ./applications |-- ./gems | |-- build_info | |-- cache | |-- extensions | |-- gems | | `-- rubygems-update-2.6.6 | | |-- bin | | |-- bundler | | | |-- exe | | | |-- lib | | | | `-- bundler | | | | |-- cli | | | | |-- fetcher ...... |
これで綺麗に終わります。