我正在编写一个脚本,需要在其中生成目录树。
如何传递带有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