列出目录中具有 .bar 扩展名但不具有 .foo.bar 扩展名的所有文件
我想使用 ls 命令列出目录 a 中具有 .bar 扩展名但不具有 .foo.bar 扩展名的所有文件。以下内容选取了我不想要的 .foo.bar
文件
ls -l some/path/*.js
一定很简单。我只需要一个 AND 和 NOT 在那里。
I want to use the ls
command to list all files in directory a with .bar
extension but not .foo.bar
extension. The following picks up .foo.bar
files which I don't want
ls -l some/path/*.js
Must be simple. I just need an AND and NOT in there somehow.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我知道您问如何在 bash 中执行此操作,但在
zsh
中您可以这样做并且您将获得所有未命名为
.foo.bar 的
。我想这是转向.bar
文件zsh
的另一个原因:)I know you asked how to do this in bash, but in
zsh
you could doAnd you would get all
.bar
files that are not named.foo.bar
. I guess it's another reason to move tozsh
:)如果您的请求是匹配 ab.js 和 cd.js 但不匹配 ef.tk.js,那么您可以使用以下代码。它解决了两个问题:
如果“DIR”是您要查找文件的目录,“EXT”是您尝试匹配的模式,请使用:
例如,如果 DIR 是“/var/tmp”且 PAT 是“js” ' (对于 *.js):
如果目标目录是“/var/tmp/my dir”,则此解决方案有效(不要忘记将目录放在引号内或转义空格)
如果您有很多文件,您可以运行进入命令行长度限制。那么您可能会考虑使用“xargs -0 -L XXX ls -l”,这样每次调用 ls 将仅针对 XXX 最大文件(例如,对 XXX 使用 500)。
If your request is to match ab.js and cd.js but not ef.tk.js, then you can use the following code. It solves 2 problems:
If 'DIR' is the directory where you want to find your files, and 'EXT' is the pattern you try to match, use:
For example, if DIR is '/var/tmp' and PAT is 'js' (for *.js) :
This solution works if the target directory is '/var/tmp/my dir' (don't forget to put the directory inside quotes then or escape the space)
If you have many files, you may run into command-line length limitation. Then you might consider using 'xargs -0 -L XXX ls -l' instead, so each invokation of ls will be only with XXX max files (eg use 500 for XXX).
使用
bash
路径名扩展和[
模式匹配,您可以编写:Using
bash
pathname expansion with[
pattern matching, you can write: