我想使用shell命令打印目录树结构,任何人都可以帮我理解如何操作吗?因为我有点新。
PS:我不能使用Sed and Octs
.
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
-- Lorem
答案 0 :(得分:3)
这是一个递归解决方案,效率最高但本机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 "$@"
$ ./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