AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 15419
In Process
Ivan
Ivan
Asked: 2010-11-30 15:28:04 +0800 CST2010-11-30 15:28:04 +0800 CST 2010-11-30 15:28:04 +0800 CST

如何列出树中的所有文件(目录及其子目录)?

  • 772

对于我的任务,我需要列出树中的所有文件(目录、其所有子目录、这些文件的所有子目录等)。

我更喜欢在 Nautilus 或 Krusader 中看到它们,但命令行解决方案也很有趣(在这种情况下,我需要列出文件的全名、大小和修改时间)。

nautilus bash files krusader ls
  • 10 10 个回答
  • 78863 Views

10 个回答

  • Voted
  1. kit.yang
    2010-11-30T17:33:44+08:002010-11-30T17:33:44+08:00

    树对你来说会很方便。

    sudo apt-get install tree
    

    用于tree filepath列出文件。

    • 40
  2. Oli
    2010-11-30T15:40:18+08:002010-11-30T15:40:18+08:00
    ls -alR
    

    这应该是最简单的方法了。我只是破解了一个查找脚本,以便为您提供更多控制权。

    • 27
  3. Oli
    2010-11-30T15:57:42+08:002010-11-30T15:57:42+08:00
    find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"
    

    您可以随心所欲地使用 printf 格式。这为您提供了一个很好的机会,可以按照您需要的方式进行格式化,如果您在另一个应用程序中使用输出,这是非常宝贵的。

    更多: http: //linux.about.com/od/commands/l/blcmdl1_find.htm

    为了提高可读性,您可以通过column命令将所有内容通过管道传输,它会自动调整大小以使它们对齐。

    find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" | column -t
    
    • 12
  4. Will
    2010-11-30T21:05:03+08:002010-11-30T21:05:03+08:00

    正如 Oli 回答的那样,find将允许您搜索整个目录树:

    find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"
    
    # Where %TY will display the mod. time year as 4 digits
    #       %Tm will display the mod. time month as 2 digits
    #       %Td will display the mod. time day as 2 digits
    #       %s displays the file size in bytes
    #       %p displays the full path name of the file
    

    您可能还想使用该-type f选项将结果限制为仅文件。如果要匹配文件模式,则需要-nameor-iname选项(分别区分大小写和不区分大小写的匹配)。阅读find的手册页 - 您可以使用大量选项来缩小/优化搜索。

    顺便说一句,如果您希望将多屏数据返回给您,请记住将您的结果通过less.

    @Oli:+1 我刚刚也学到了一些新东西 - column。以前没用过。

    • 4
  5. 8128
    2010-11-30T23:48:44+08:002010-11-30T23:48:44+08:00

    ls是在 Ubuntu 和其他 Linux 和 Unix 操作系统中列出文件的标准命令。ls学习特别有用,因为您会发现它安装在您遇到的每个 Unix 系统上。默认情况下运行它只显示当前目录中的文件。

    然而,-R“标志”是递归选项(注意大写R,而不是r),它也会显示所有子目录。

    您也要求提供“详细信息” - 为此您需要-l标志(这是一个小写的 L,而不是第一)。请注意,这会为您提供文件权限信息以及文件大小、时间/日期信息和文件名。

    如果您还想显示隐藏文件/文件夹(相当于Nautilus中的Ctrl+ ),请添加“全部”标志。H-a

    您可以将标志合并在一起,为您提供以下内容:

    ls -lR
    

    如果你在任何大小合适的文件夹上运行它,你会发现这会产生一个巨大的长输出,可以非常快速地向下滚动你的屏幕。为了解决这个问题,您可以ls通过一个名为的程序“管道”输出(该名称是对最初出现但具有更多功能less的类似名称的模仿)。more

    ls -lR | less
    

    这将允许您使用向上/向下箭头键以及 PageUp/Down 以更舒适的速度浏览输出。

    • 4
  6. Frank Z.
    2013-08-28T21:23:13+08:002013-08-28T21:23:13+08:00

    使用克鲁萨德:

    1. 使用搜索 (Ctl-S)。
    2. 勾选“在子目录中搜索”。
    3. 点击“搜索”。
    4. 搜索完成后,单击“Feed to listbox”。

    这将允许您通过拖动到另一个面板等来处理整个批次。

    • 0
  7. Glutanimate
    2013-08-28T22:01:21+08:002013-08-28T22:01:21+08:00

    Nautilus 脚本怎么样?

    #!/bin/bash
    #
    # AUTHOR:       (c) 2013 Glutanimate (https://askubuntu.com/users/81372)
    # NAME:         DirTree 0.1
    # DEPENDENCIES: zenity tree  (install with sudo apt-get install zenity tree)
    # LICENSE:      GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
    #
    # DESCRIPTION:  Creates a directory tree at the current location. If you want you
    #               can filter the output by a pattern (e.g. *.avi to only include avi
    #               files).
    
    TITLE=DirTree
    
    # Get working directory
    WORKINGDIR="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"
    
    # Time and date
    TIME=$(date +"%Y-%m-%d_%H%M%S")
    
    # Filter pattern
    zenity --question --title "$TITLE" --text "Do you want to filter by a specific file pattern?"
    
    if [ "$?" = "1" ]
      then
          customtree="tree"
      else
          PATTERN=$(zenity --entry --title "$TITLE" --text="Please enter a file pattern (e.g. *.avi)")
    
             if [ -z "$PATTERN" ]
               then
                   exit
               else
                   customtree="tree -P $PATTERN"               
             fi
    
    fi
    
    # Directory tree
    $customtree "$WORKINGDIR" > "$WORKINGDIR/directorytree_$TIME.txt"
    

    安装说明:如何安装 Nautilus 脚本?

    • 0
  8. Anmol Singh Jaggi
    2016-03-07T02:58:14+08:002016-03-07T02:58:14+08:00

    我专门为此创建了一个程序——目录快照。
    它递归地遍历一个目录,并将它遇到的所有文件和文件夹的名称和大小存储在结构整齐的 HTML 文件中,这些文件的组织与输入目录的组织相似。
    换句话说,这可以被认为是dir /sortree /f命令的超链接版本。

    • 0
  9. wjandrea
    2017-12-29T15:36:30+08:002017-12-29T15:36:30+08:00

    鹦鹉螺

    1. 在列表视图中启用展开子文件夹
      • 对于 14.04 和 16.04,请参见此处
      • 对于 17.10 和 18.04,请参见此处
    2. 单击文件夹并按星号(*在数字键盘上,或Shift+ 8)展开一级子目录。每按一次星号,就会展开下一层。
      • 资料来源:htorque 在这里的回答。

    这也适用于尼莫。

    • 0
  10. Nitish Srivastava
    2015-07-22T12:36:23+08:002015-07-22T12:36:23+08:00

    你可以把这些放在你的 .bashrc 文件中

    function _get_tree(){ ls -alR | while read LINE; do   echo $LINE | grep ":$" > /dev/null;   if [ $? -eq 0 ];   then     VAR=$(echo $LINE | grep ":$"| sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/' | tee /dev/tty);   fi;   echo $LINE | grep "^-" > /dev/null;   if [ $? -eq 0 ];   then     size=${#VAR};     for i in $(eval echo "{1..$size}"); do echo -n ' '; done;     echo -n '..';     echo $LINE | cut -d ' ' -f9;   fi; done; };
    
    alias get_tree='_get_tree'
    

    现在,您可以在任何目录中使用 get_tree 命令,它将显示整个层次结构。

    句法:

    $ get_tree
    

    样本输出:

       .
    
        ..test.sh
    
       |-2
    
          ..123.log
    
       |---3
    
       |-----4
    
       |-5
    
       |---6
    

    希望这可以帮助 !!

    • -1

相关问题

  • 在 nautilus 中刷新缩略图

  • 如何在 Nautilus 中管理保存的完整网页及其目录(例如 n.html 和 n_files)

  • 如何让 Nautilus windows 坚持拖放?[关闭]

  • Nautilus 中的 FTP 连接问题 - 一段时间后似乎超时

  • 备份 bash 脚本未压缩其 tarball

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve