将忽略的目录列表传递给“tree”命令

将忽略的目录列表传递给“tree”命令

我正在编写一个脚本,需要在其中生成目录树。

如何传递带有tree要忽略的目录列表的变量?这些目录的名称中带有空格。

我尝试过这样的事情:

tree -o /volume1/web/eb.html -T "List" --charset UTF-8 -C -I "$to_ignore" -P '*pdf' --prune --noreport /volume1/docs

其中可用的to_ignore是脚本在其他地方生成的目录列表:

'dir1|dir2|dir with space|dir4'

但这没有用。它在带有空格的目录上崩溃了。

好吧,所以在变量周围使用引号有助于解决崩溃问题,但随后tree甚至会打印那些需要 pdf 文件并在列表中忽略的目录。如果我在命令中直接编写要忽略的目录,那么奇怪的tree ...是它工作得很好。

答案1

引用你的变量:

$ tree foo                
foo
├── bar foo
│   └── blah
├── baz
│   └── blah
├── foo
├── foo bar
│   └── blah
└── yada

8 directories, 0 files
$ to_ignore='yada|bar foo|baz'
$ tree foo -I "$to_ignore"    
foo
├── foo
└── foo bar
    └── blah

3 directories, 0 files

相关内容