过滤“tree”命令的输出

smi*_*dha 10 bash

我有一个包含许多子目录的目录,每个子目录都有许多具有不同扩展名的文件。

\n\n

我是否可以过滤命令的输出, tree以便具有某些扩展名的文件,例如 say.log.msh/或某些命名目录)不在输出中

\n\n

考虑下面的例子

\n\n
    .\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dir1\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar.log\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 blahblah\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 blah.txt\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hello.txt\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.msh\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo.log\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 out\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test.py\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.txt\n\n    2 directories, 8 files\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想过滤掉某些目录(显然还有它们的内容)和具有某些扩展名的文件。例如,我想过滤掉目录的内容以及具有扩展名和blahblah的所有文件.msh.log

\n\n

所以我希望输出是

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dir1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hello.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 out\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.txt\n
Run Code Online (Sandbox Code Playgroud)\n

afe*_*ter 17

tree命令有-I一个选项,允许您过滤掉与给定模式匹配的文件和目录。

tree -I 'blahblah|*.msh|*.log'
Run Code Online (Sandbox Code Playgroud)

  • @PabloPazos `-P` 选项应该可以做到这一点。 (6认同)
  • 这有助于删除但不能包含,如何仅包含一些扩展? (2认同)