使用“TREE”作为子目录

使用“TREE”作为子目录

是否可以使用treecd ~/ 进入我要创建文件的目录来创建多个输出文件tree

例如,我有一个名为 的目录parent-dir

其中的parent-dir子目录名为abcto z,还有一个子目录的标题为0-9

这些子目录内部还有更多子目录,标题为随机的使用小写/大写、数字和一些特殊字符。(正是在这个级别我想创建一个tree.txt输出文件)


这是目录结构:

parent-dir ( <-- I will be cd ~/ here and run cmd from here)
|_a
| |_ahgfVFCJC6.h78 ( <-- cmd should create a tree titled ahgfVFCJC6.h78.txt)
| | |_file.jpg
| | |_file.mp4
| |  
| |_a34grBVFHEwerv ( <-- cmd should create a tree titled a34grBVFHEwerv.txt)
|   |_file.txt
|   |_file.mp3
|
|_b
| |_bhlHKH.7tbh ( <-- cmd should create a tree titled bhlHKH.7tbh.txt)
|   |_file.png
|   |_file.txt

...等等...

The .txt files created using `tree`:

ahgfVFCJC6.h78.txt
a34grBVFHEwerv.txt
bhlHKH.7tbh.txt

should be outputted in a specified directory (example: ~/Desktop/Tree)

我希望在其中运行命令,parent-dir因为a仅存在数千个类似的目录ahgfVFCJC6.h78(但名称不同)。必须通过 cd 进入每个子目录将花费太多时间。

答案1

zsh

for d (parent-dir/*/*(N/)) (cd -- $d && tree) > output-dir/$d:t.txt

答案2

您不需要 cd 到目录即可对其使用 tree 命令,并且可以指定多个目录tree同时对其使用。

tree /dir1 /dir2 /dir3 -o /some/other/path/outputfile -n

另外,如果您想使用标准输出重定向>,或者>>您也可以在那里指定路径

tree /dir1 /dir2 /dir3 -n > /some/other/path/outputfile

如果您有一些文件包含要检查的路径,您可以执行以下操作以在每个目录中创建输出文件。

for i in $(cat filewithdirs); do tree "$i" -o "$i/outputfile"; done

如果你想获取父目录中所有子目录的路径,你可以使用这样的东西

tree parentdir/ -L 1 -fid

这将打印parentdir中的所有第一级子目录,不带缩进并带有它们的路径

  • -L 选项指定您想要进入多少层深度

  • -f 指定打印路径前缀的选项

  • -i 指定不使用缩进

  • -d 指定仅列出目录

  • -o 指定使用输出文件而不是标准输出

相关内容