如何仅列出文件夹,仅列出patten匹配的文件夹名
专栏:偷懒小技巧 Jan. 1, 2025, 2:50 p.m. 61 阅读
如何仅列出文件夹,仅列出patten匹配的文件夹名。推荐一个小工具lsdir。

我们经常有一种需求,就是仅列出当前目录下或者子目录下的文件名,而不是所有文件。如果能指定pattern来筛选就更好了。然而linux lstree都不能很好的达到想要的效果。

功能列表

今天要介绍的这个小工具是python3写的,支持上面提到的功能:

  • 可以支持子目录级数

  • 可以指定要搜索pattern,使用python3正则语法

  • 仅列出目录,忽略文件

注:下载链接在文章末尾

具体使用方法

下面是使用方法的介绍,假设有如下的目录结构:

> tree ..
|-- 1.txt
|-- 2.txt
|-- a
    |-- 3.txt
    |-- d
        |-- 5.txt
        |-- tc_4
        |-- tc_5
        |-- tc_6
    |-- tc_1
    |-- tc_2
    |-- tc_3
|-- b
    |-- 4.txt
|-- c

1、仅列出文件夹

> lsdir 
# ./a
# ./a/tc_1
# ./a/tc_2
# ./a/tc_3
# ./a/d
# ./a/d/tc_4
# ./a/d/tc_5
# ./a/d/tc_6
# ./b
# ./c

2、仅列出当前层级的文件夹

> lsdir -l 1
# ./a
# ./b
# ./c

3、仅列出两级的文件夹

> sdir -l 2
# ./a
# ./a/tc_1
# ./a/tc_2
# ./a/tc_3
# ./a/d
# ./b
# ./c

4、仅列出含tc_的文件夹

> lsdir tc_
# ./a/tc_1
# ./a/tc_2
# ./a/tc_3
# ./a/d/tc_4
# ./a/d/tc_5
# ./a/d/tc_6

5、仅列出含数字结尾的文件夹

> lsdir '\d+$'
# ./a/tc_1
# ./a/tc_2
# ./a/tc_3
# ./a/d/tc_4
# ./a/d/tc_5
# ./a/d/tc_6

注意: 正则要用单引号括起来,避免shell转义

6、仅列出2层级內,含tc_的文件夹

> lsdir -l 2 tc_
# ./a/tc_1
# ./a/tc_2
# ./a/tc_3

下载链接

lsdir v1.0.zip

感谢阅读,更多文章点击这里:【专栏:偷懒小技巧】
最新20篇 开设专栏