#通配符 #ls #cli

wildpath

一个用于查找所有符合给定模式的文件路径的库

1 个不稳定版本

0.1.0 2024年3月27日

#1671命令行工具


用于 wildpath-cli

MIT 许可证

17KB
305 代码行

wildpath

一个用于在 UNIX 系统中解析文件路径通配符的 Rust 库。

该库公开了一个方法,resolve,它将接受一个包含通配符的文件路径,并返回文件系统中所有符合给定描述的内容。

例如,考虑以下文件系统:

root
├── blogs
│   ├── blog_1
│   │   ├── assets
│   │   │   └── logo.jpeg
│   │   └── post.txt
│   └── blog_2
│       ├── assets
│       │   └── research_notes.txt
│       └── post.txt
└── videos
    ├── video_1
    │   ├── assets
    │   │   └── logo.jpeg
    │   └── script.txt
    ├── video_2
    │   ├── assets
    │   │   └── sound_effect.wav
    │   └── script.txt
    └── video_3
        ├── assets
        │   └── new_logo.png
        └── script.txt

如果你想找到所有内容中的文本,你可以调用

resolve(&Path::new("/root/*/*/*.txt").unwrap())

这将返回所有 3 层深的 txt 文件

[
    "/root/blogs/blog_1/post.txt",
    "/root/blogs/blog_2/post.txt",
    "/root/videos/video_1/script.txt",
    "/root/videos/video_2/script.txt",
    "/root/videos/video_3/script.txt"
]

如果你想查看所有使用过的标志版本,你可以调用

resolve(&Path::new("/root/*/*/assets/*logo*").unwrap())

这将返回

[
    "/root/blogs/blog_1/assets/logo.jpeg",
    "/root/videos/video_1/assets/logo.jpeg",
    "/root/videos/video_3/assets/new_logo.png"
]

或者,如果你想查看原始博客和视频使用的标志,你可以调用

resolve(&Path::new("/root/*/*_1/assets/*logo*").unwrap())

这将返回

[
    "/root/blogs/blog_1/assets/logo.jpeg",
    "/root/videos/video_1/assets/logo.jpeg"
]

如果添加一个名为 presentations 的新目录,只要它遵循相同的结构,这条相同的代码也将选择第一个演示文稿中使用的标志。

wildpath 也会跟随符号链接并解析。例如,如果你有以下文件系统:

root
├── A
│   └── X (<- symlink to B)
└── B
    └── c.png

并且传递一个路径 /root/A/*/*,你将收到 [/root/B/c.png] 作为输出。

限制

  • wildpath 只在 UNIX 系统上进行过测试。目前,它可能在 Windows 上无法正常工作。
  • 它也不会在路径中尊重 ...。目前,这些必须在使用库之前解决。

依赖项

~2–3MB
~53K SLoC