【问题标题】:Folders tree with rights具有权限的文件夹树
【发布时间】:2013-08-15 15:05:05
【问题描述】:

在 OS X 和 SunOS OS 中不存在“bash 树命令”。

要绘制文件夹的树“图”,我使用以下说明:

find . -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'

或者这个也显示文件。

find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'

但我需要另一个包含文件夹权限的版本。我很迷失在右侧添加文件夹权限。有人知道吗??

更新: 有任何选项可以绘制文件夹内的文件及其权限。我正在尝试使用此命令find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' 并结合#fedorqui 提供的解决方案,但结果不是很好。

就是上面命令得到的结果,没有权限。

| | |____src
| | | |____cft2exit.c
| | | |____cft2exit_AIX
| | | |____cft2exit_SUN
| | | |____gestidt.c
| | | |____gestidt.h
| | | |____gestidt.o
| | | |____gestidt_AIX
| | | |____gestidt_SUN
| | | |____gestidt_SunOS
| | | |____makefile
| | | |____sem.a
| | | |____ut_sem.c
| | | |____ut_sem.h
| | | |____ut_sem.o
| |____data
| | |____purge.dat
| |____lost+found

【问题讨论】:

  • 这是一个非常棘手和不错的方法,恭喜。你的意思是像___dir1 drwxrwxr-x这样的东西吗?
  • 是的,正是你写的。

标签: macos bash terminal treeview sunos


【解决方案1】:

您可以对find 的每个结果执行ls -ld。它会给你权限,其他东西,然后是文件名。如果您随后通过管道连接到 awk,则使用 awk '{print $NF, $1}' 您可以打印这两个信息块。最后,您通过管道传送到您的sed 命令。一起来:

find . -type d -exec ls -ld {} \; | awk '{print $NF, $1}' | sed -e 's;[^/]*/;|____;g;s;____|; |;g'

测试

$ find . -type d -exec ls -ld {} \; | awk '{print $NF, $1}' | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
. drwxrwxr-x
|____python drwxrwxr-x
| |____jinja2 drwxrwxr-x
| | |____bk drwxrwxr-x
| | |____infiles drwxrwxr-x
.......

小步走:

$ find . -type d -exec ls -ld {} \;
drwxrwxr-x 7 me me 4096 Aug 15 15:35 .
drwxrwxr-x 3 me me 4096 Aug 13 14:31 ./python
drwxrwxr-x 4 me me 4096 Apr 26 15:14 ./python/jinja2
drwxrwxr-x 2 me me 4096 Apr 19 14:26 ./python/jinja2/bk
drwxrwxr-x 2 me me 4096 Apr 19 12:54 ./python/jinja2/infiles

然后

$ find . -type d -exec ls -ld {} \; | awk '{print $NF, $1}' 
. drwxrwxr-x
./python drwxrwxr-x
./python/jinja2 drwxrwxr-x
./python/jinja2/bk drwxrwxr-x
./python/jinja2/infiles drwxrwxr-x

【讨论】:

  • 找不到'-ls'选项??
  • @Dru 我不知道。
  • 是否有任何选项可以显示文件夹以及文件夹中的文件,所有这些都具有他们的权限。我正在尝试将您的解决方案与其他命令相结合 find 。 -打印 | sed -e 's;[^/]*/;|____;g;s;____|; |;g' ,但结果不是很好。
  • @JorgeVegaSánchez 嗯,我不确定我明白你的意思。您可以使用示例输入/输出来更新您的问题吗?
  • @JorgeVegaSánchez 使用ls -ld 很重要,因为-d 提供有关目录的信息。否则使用ls -l,您将打印每个特定目录的内容。
【解决方案2】:

在 OS X 上,您可以使用 homebrew 安装 tree

brew install tree

或者,使用macports

sudo port install tree

然后,查看具有权限的目录:

$ tree -p -d

样本输出:

.
├── [drwxr-xr-x]  folder1
│   └── [drwxr-xr-x]  folder2
│       └── [drwxr-xr-x]  folder3
│           └── [drwxr-xr-x]  folder4
└── [drwxr-xr-x]  folder5
    ├── [drwxr-xr-x]  folder6
    └── [drwxr-xr-x]  folder7

【讨论】:

    猜你喜欢
    • 2019-03-06
    • 2011-04-16
    • 2012-05-08
    • 2010-11-26
    • 1970-01-01
    • 2012-05-31
    • 2019-09-28
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多