是否可以使用tree
cd ~/ 进入我要创建文件的目录来创建多个输出文件tree
?
例如,我有一个名为 的目录parent-dir
。
其中的parent-dir
子目录名为a
、b
、c
to 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 指定使用输出文件而不是标准输出