加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash命令以递归方式列出文件,但按分类排序

发布时间:2020-12-16 01:10:44 所属栏目:安全 来源:网络整理
导读:我经常使用 Bash中的优秀 find程序列出包含某些过滤器的文件.例如,在Subversion(SVN)工作副本中,我有时希望以递归方式列出所有文件,但不包括.svn子目录,如下所示: find . -name '.svn' -prune -o -type f -print 今天,我想做类似的事情,但我也想影响列出目
我经常使用 Bash中的优秀 find程序列出包含某些过滤器的文件.例如,在Subversion(SVN)工作副本中,我有时希望以递归方式列出所有文件,但不包括.svn子目录,如下所示:
find . -name '.svn' -prune -o -type f -print

今天,我想做类似的事情,但我也想影响列出目录内容的顺序:我希望’普通’文件后跟子目录(然后是递归内容).似乎没有这个选项.

ls(list)命令有一个递归列出的选项.此命令有许多排序选项,包括按文件名列出,访问时间,大小等,但不是分类,尽管-p选项将注释目录.

现在,我可以编写一个Python脚本来完成我想要的操作.但是,找到几乎我想做的一切.通常在Bash shell中,可以组合程序来做你想做的事情:每个程序,比如find,sort,uniq,ls,wc,执行一个简单的任务,但做得很好.并非每个程序都需要能够排序,因为排序可以排序.所以,真的,我只是好奇……

我的问题是,你知道是否有办法做我想做的事情:既可以通过组合Bash程序来过滤和排序递归文件列表?

例如,find以这个按字母顺序排列的文件给我:

a.txt
bfile1.txt
bsubdirfile2.txt
bthen_file3.txt
c.txt
dfile4.txt
e.txt

但是我更喜欢它们的顺序,在每个目录中,普通文件首先按字母顺序列出,然后按字母顺序依次列出目录:

a.txt
c.txt
e.txt
bfile1.txt
bthen_file3.txt
bsubdirfile2.txt
dfile4.txt

(我是Windows用户,但是我在Cygwin运行了一个Bash shell.)

谢谢.

使用嵌入式查找.外部查找定位所有目录并执行内部查找,该查找仅显示该目录中所需的文件:
find . -type d -exec find {} -type f -maxdepth 1 ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读