从 shell 中的通配符搜索中排除字符串
我试图从文件搜索中排除某个字符串。
假设我有一个文件列表:file_Michael.txt、file_Thomas.txt、file_Anne.txt。
我希望能够编写类似
ls *<and not Thomas>.txt
给我 file_Michael.txt 和 file_Anne.txt 的内容,但不给我 file_Thomas.txt。
反过来很容易:
ls *Thomas.txt
使用单个字符也很容易:
ls *[^s].txt
但是如何使用字符串呢?
塞巴斯蒂安
I am trying to exclude a certain string from a file search.
Suppose I have a list of files: file_Michael.txt, file_Thomas.txt, file_Anne.txt.
I want to be able and write something like
ls *<and not Thomas>.txt
to give me file_Michael.txt and file_Anne.txt, but not file_Thomas.txt.
The reverse is easy:
ls *Thomas.txt
Doing it with a single character is also easy:
ls *[^s].txt
But how to do it with a string?
Sebastian
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 find 来执行此操作:
You can use find to do this:
对于 Bash
,第一行表示“设置扩展通配符”,请参阅 手册了解更多信息。
其他一些方法可能是:
With Bash
where the first line means "set extended globbing", see the manual for more information.
Some other ways could be:
如果要循环通配符,如果有想要排除的内容,只需跳过迭代的其余部分即可。
If you are looping a wildcard, just skip the rest of the iteration if there is something you want to exclude.