我试图按以下方式列出其中包含的目录和文件:
DIR: name1
file1
file2
file3
DIR: name2
file4
file5
file6
DIR: name3
file7
到目前为止,我已经想出了一种使用find
和sed
来获取树结构的方法,如下所示:
find . | sed -e "s/[^-][^\/]*\// |/g"
我不知道如何区分文件和目录,以便能够在目录名称前面添加DIR:
。
答案 0 :(得分:4)
尝试使用树和GNU sed:
tree -F coreutils-8.9 | sed -r 's|── (.*)/$|── DIR: \1|'
输出(示例):
coreutils-8.9 ├── ABOUT-NLS ├── bootstrap.conf ├── DIR: build-aux │ ├── announce-gen* │ ├── arg-nonnull.h │ └── ylwrap* ├── cfg.mk ├── ChangeLog ├── DIR: doc │ ├── ChangeLog-2007 │ └── constants.texi └── TODO
我认为文件名不包含"──"。
答案 1 :(得分:3)
如果您没有find
,可以使用GNU $ find . -mindepth 1 -printf '%y %p\n'
d ./dir1
d ./dir1/dir2
f ./dir1/dir2/fileA
d ./dir1/dir3
f ./dir1/fileC
f ./fileB
来识别目录与文件:
$ find . -mindepth 1 -printf '%y %p\n' |
awk '$1=="d"{sub(/.*\//,"&DIR: ")} {gsub(/[^\/]*\//," ")} 1'
DIR: dir1
DIR: dir2
fileA
DIR: dir3
fileC
fileB
然后使用awk解析输出以创建缩进等。
PHP