shell中的目录树结构
我想用shell命令打印一个目录树结构,有人能帮我了解一下怎么做吗?因为我有点新 PS:我不能使用Sed和OCTshell中的目录树结构,shell,command,Shell,Command,我想用shell命令打印一个目录树结构,有人能帮我了解一下怎么做吗?因为我有点新 PS:我不能使用Sed和OCT . |-- Lorem |-- Lorem |-- Lorem |-- Lorem |-- Lorem |-- Lorem -- Lorem 下面是一个递归解决方案,它不是最有效的,但是是本机的bash,易于理解: $ cat tree.sh #!/bin/bash shopt -s nullglob tree() { if [ "$1" = '-d'
.
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
-- Lorem
下面是一个递归解决方案,它不是最有效的,但是是本机的
bash
,易于理解:
$ cat tree.sh
#!/bin/bash
shopt -s nullglob
tree()
{
if [ "$1" = '-d' ]; then
_TREE_DIRSONLY=1
shift
fi
_tree "${1-.}"
}
_tree()
{
local indent="${indent}"
local dir=${1%/}
printf "%s|-- %s\n" "${indent}" "${dir##*/}"
indent="${indent} "
for file in "$1"/*; do
if [ -d "${file}" ]; then
_tree "${file}"
continue
fi
(( _TREE_DIRSONLY > 0 )) && continue
printf "%s|-- %s\n" "${indent}" "${file##*/}"
done
}
tree "$@"
可能重复:欢迎使用堆栈溢出。请尽快阅读这一页。[温和的调侃:在一个目录中有多个文件,但名称末尾的尾随空格(或其他不可见字符)数量不同,这是个坏主意。我不明白如何才能在一个目录中有这么多
Lorem
(除非我想您使用回车符覆盖不同的前缀)。]例如,您应该展示您已经尝试了什么,或者您计划如何获取目录名列表。这是unix/linux系统吗?如果是,请查看您的系统是否有ptree
。否则,当您阅读manps
时,请查找树
选项。(最好在您的问题上添加一个标签,说明您正在使用的操作系统类型)。祝你好运。是的,我正在搜索类似的东西,但是我不想使用以前编写的代码,比如树,而不是我可以使用sed,我想知道创建这样的树的步骤和想法。这也可以是对.bashrc文件的一个方便的添加,别名为alias lst=“tree.| less”
$ ./tree.sh /proc/fs
|-- fs
|-- cifs
|-- cifsFYI
|-- DebugData
|-- LinuxExtensionsEnabled
|-- LookupCacheEnabled
|-- MultiuserMount
|-- SecurityFlags
|-- traceSMB
|-- ext4
|-- jbd2
|-- nfsd
|-- nfsfs
|-- servers
|-- volumes
|-- xfs
|-- stat
|-- xqm
|-- xqmstat
$ ./tree.sh -d /proc/fs
|-- fs
|-- cifs
|-- ext4
|-- jbd2
|-- nfsd
|-- nfsfs
|-- xfs