Jen*_*aiz 10 command-line ls directory files
如果我想要以.fasI结尾的文件,我可以使用ls命令执行以下操作:
ls -l /users/jenna/bio/*.fas
Run Code Online (Sandbox Code Playgroud)
这列出了所有以.fas. 但是我怎样才能得到以.fas或结尾的文件.pep?
ls -l /users/jenna/bio/(*.fas | *.pep)似乎不起作用?我知道可能还有其他命令可以做到这一点,但是有没有办法让它与它一起工作ls?
谢谢你的帮助 !
用这个:
ls -l /users/jenna/bio/*.{fas,pep}
或这个:
find /users/jenna/bio -iname '*.pep' -or -iname '*.fas'
最有可能开箱即用的是大括号扩展。它适用于 bash、zsh 和 ksh。
\n\nls -l /users/jenna/bio/*.{fas,pep}\nRun Code Online (Sandbox Code Playgroud)\n\n(大括号周围没有空格。)
\n\n在 bash 和 ksh 中,如果其中一个扩展名不匹配,则会显示错误,但仍会列出与另一个扩展名匹配的文件。原因是大括号扩展不是通配符匹配功能,而是文本替换:在 shell 开始查找与模式匹配的文件之前*.{fas,pep}转换为。*.fas *.pep在 zsh 中,您会收到错误并且命令将无法运行,但有更好的方法: \xe2\x80\x9cor\xe2\x80\x9d glob 模式。除非没有任何扩展名匹配,否则这个不会出错。
ls -l /users/jenna/bio/*.(fas|pep)\nRun Code Online (Sandbox Code Playgroud)\n\n或者模式也可以使用不同的语法:@(\xe2\x80\xa6|\xe2\x80\xa6); 在 bash 中,该语法需要使用 激活shopt -s extglob,而在 zsh 中,该语法需要使用 激活setopt ksh_glob。
ls -l /users/jenna/bio/*.@(fas|pep)\nRun Code Online (Sandbox Code Playgroud)\n\n(其中一些行为可以配置。除非明确指定,否则我的所有语句都适用于 shell 的默认配置。)
\n