.git ディレクトリを無視し、それ以外を全て表示する tree コマンド
tree -a -I ".git"
tree コマンド -I オプションのポイント
-Iオプションは、ディレクトリやファイルに含まれる文字列を指定する。指定された文字列を含むディレクトリやファイルは結果から無視される。- ディレクトリが無視された場合は、そのディレクトリないのファイルも表示されない。
具体例
.git ディレクトリを含む内容です。
$ ls -a
./ ../ .git/ LICENSE README.md bash/ git/ link.ps1 link.sh mintty/ tmux/ vim/
$
この状態で、 tree -a とすると、 .git/ とその中の大量のディレクトリ、ファイルも表示してしまいます。
そこで、 tree コマンドの -I オプションで取り除いてやります。
コツとしては、
-I ".git/"ではだめ。何も取り除けない。-I ".git/*"でもだめ。何も取り除けない。-I ".git*"でもだめ。.git/は取り除けるが、取り除いて欲しくないgit/.gitignore等も取り除いてしまう。-I ".git"で OK 。この場合、git/.gitignore等は取り除かれない。
具体的には、次の結果となりました。
$ tree -a -I '.git'
.
├── LICENSE
├── README.md
├── bash
│ ├── .bash_profile_mac
│ └── .bashrc_win_git_bash
├── git
│ ├── .gitconfig
│ └── .gitignore
├── link.ps1
├── link.sh
├── mintty
│ ├── .mintty
│ │ └── themes
│ │ ├── base16-google-dark.minttyrc
│ │ ├── base16-google-light.minttyrc
│ │ ├── base16-iceberg.minttyrc
│ │ ├── base16-macintosh.minttyrc
│ │ ├── base16-monokai.minttyrc
│ │ ├── base16-solarized-dark.minttyrc
│ │ └── base16-solarized-light.minttyrc
│ └── .minttyrc
├── tmux
│ └── .tmux.conf
└── vim
├── .vimrc
├── dein.rc.vim
└── dein.toml
7 directories, 20 files
$
おわりに
tree --help で -I または --ignore-case が使えそうだというところまでは絞り込めましたけれども、指定の仕方がダメで実現できていませんでした。
少し調べて、やりたいことが実現できたので、手間をかけて良かったです♪
以上です。
