カテゴリー
Linux

tree コマンドで .git/ 以外を全て表示するオプション

.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 が使えそうだというところまでは絞り込めましたけれども、指定の仕方がダメで実現できていませんでした。

少し調べて、やりたいことが実現できたので、手間をかけて良かったです♪

以上です。

コメントを残す