问题描述
对于我的任务,我需要列出树中的所有文件(目录,其所有子目录,所有子目录等)。
我更喜欢在Nautilus或Krusader中看到它们,但是命令行解决方案也很有趣(在这种情况下,我需要列出文件的全名,大小和修改时间)。
最佳解决办法
tree对您来说非常方便。
sudo apt-get install tree
使用tree filepath
列出文件。
次佳解决办法
ls -alR
这可能是最简单的方法。我只是在破解一个查找脚本,以便为您提供更多控制。
第三种解决办法
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
第四种办法
正如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
。之前没有用过。
第五种办法
ls
是在Ubuntu和其他Linux和Unix操作系统中列出文件的标准命令。 ls
特别有用,因为您会发现它安装在您遇到的每个Unix系统上。默认情况下,运行此选项仅显示当前目录中的文件。
然而,-R
‘flag’是递归选项(注意大写字母R,而不是r),它也会显示所有sub-directories。
您也要求”details” – 为此您需要-l
标志(这是一个小写的L,而不是第一个)。请注意,这会为您提供文件权限信息以及文件大小,时间/日期信息和文件名。
如果您还要显示隐藏文件/文件夹(相当于Nautilus中的Ctrl
+ H
),则添加-a
‘all’标志。
您可以将标志合并在一起,为您提供以下内容:
ls -lR
如果你在任何体面的文件夹上运行它,你会发现这会产生巨大的长输出,可以非常快速地向下滚动屏幕。为了解决这个问题,您可以通过一个名为less
的程序’pipe’输出ls
(该名称是类似于more
的模仿,它是第一个但具有更多功能)。
ls -lR | less
这将允许您使用向上/向下箭头键和PageUp /Down以更舒适的速度通过输出。