我经常使用
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 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.)
谢谢.
使用嵌入式查找.外部查找定位所有目录并执行内部查找,该查找仅显示该目录中所需的文件:
find . -type d -exec find {} -type f -maxdepth 1 \;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。