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


41

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

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


这个问题有一个可怕的很多意见。也许您可以接受您认为最有帮助的答案,以节省@Ivan的时间?
starbeamrainbowlabs

Answers:


39

将为您提供方便。

sudo apt-get install tree

使用tree filepath列出文件。


27
ls -alR

那可能是最简单的方法。我只是破解一个查找脚本,以便给您更多的控制权。


7
或者只是ls -R如果您不想要所有细节。
马修2010年

11
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

4

正如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选项将结果限制为仅文件。如果要匹配文件模式,则需要-name-iname选项(分别区分大小写和不区分大小写)。通读find的手册页-您可以使用大量选项来缩小/缩小搜索范围。

顺便说一句,如果您希望将大量筛选的数据抛给您,请记住将结果传递给less

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


3

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

但是,-R“ flag”是递归选项(注意大写字母R,而不是r),该选项还将向您显示所有子目录。

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

如果您还想显示隐藏的文件/文件夹(在Nautilus中等于Ctrl+ H),则添加-a'all'标志。

您可以将标志合并在一起,以提供以下信息:

ls -lR

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

ls -lR | less

这将使您可以使用上/下箭头键以及PageUp / Down来更舒适地浏览输出。


0

使用Krusader:

  1. 使用搜索(Ctl-S)。
  2. 选中“在子目录中搜索”。
  3. 点击“搜索”。
  4. 搜索完成后,单击“进给列表框”。

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


0

怎么样鹦鹉螺脚本

#!/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

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


你写dirtree用DOS风格的选择,所以我要问,将这项工作在Ubuntu?
wjandrea

是的,实际上我已经安排它每个周末在我的Ubuntu安装上运行。虽然,它是使用C ++和Boost构建的,所以编译和创建二进制文件会有些困难。这就是为什么我要将其移植到Python。无论如何,如果您愿意,我可以给您预编译的二进制文件。
安莫尔·辛格·贾吉

0

鹦鹉螺

  1. 在列表视图中启用扩展子文件夹
    • 对于14.04和16.04,请参见此处
    • 对于17.10和18.04,请参见此处
  2. 单击一个文件夹,然后按星号(*在数字键盘上或Shift+ 8)以展开子目录的一级。每次按星号,它将扩展下一个级别。

这在Nemo中也适用。


-1

您可以将它们放在您的.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代码格式不良,解释不足。以及为什么要别名?
wjandrea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.