我经常使用
Bash中的优秀
find程序列出包含某些过滤器的文件.例如,在Subversion(SVN)工作副本中,我有时希望以递归方式列出所有文件,但不包括.svn子目录,如下所示:
原文链接:https://www.f2er.com/bash/384483.htmlfind . -name '.svn' -prune -o -type f -print
今天,我想做类似的事情,但我也想影响列出目录内容的顺序:我希望’普通’文件后跟子目录(然后是递归内容).似乎没有这个选项.
ls(list)命令有一个递归列出的选项.此命令有许多排序选项,包括按文件名列出,访问时间,大小等,但不是分类,尽管-p选项将注释目录.
现在,我可以编写一个Python脚本来完成我想要的操作.但是,找到几乎我想做的一切.通常在Bash shell中,可以组合程序来做你想做的事情:每个程序,比如find,sort,uniq,ls,wc,执行一个简单的任务,但做得很好.并非每个程序都需要能够排序,因为排序可以排序.所以,真的,我只是好奇……
我的问题是,你知道是否有办法做我想做的事情:既可以通过组合Bash程序来过滤和排序递归文件列表?
例如,find以这个按字母顺序排列的文件给我:
a.txt b\file1.txt b\subdir\file2.txt b\then_file3.txt c.txt d\file4.txt e.txt
但是我更喜欢它们的顺序,在每个目录中,普通文件首先按字母顺序列出,然后按字母顺序依次列出目录:
a.txt c.txt e.txt b\file1.txt b\then_file3.txt b\subdir\file2.txt d\file4.txt
(我是Windows用户,但是我在Cygwin运行了一个Bash shell.)
谢谢.