wha*_*ife 4 linux bash ls wildcards
我正在尝试使用以下命令查找特定文件类型的所有项目文件:
ls -ltR *.mb
Run Code Online (Sandbox Code Playgroud)
我知道在几个文件夹中有我想要的文件,但我没有得到任何结果。我做错了什么?
phu*_*clv 14
ls
不匹配模式。它只是列出输入参数中的文件或文件夹。在传递给之前*.mb
被shell扩展,因此如果当前目录中没有命名的文件,则不会输出任何内容,否则只会输出当前目录中的文件ls
*.mb
递归列出文件的标准方法是使用 find
find . -name '*.mb' -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以根据需要自定义输出列表格式。请参阅:按上次编辑日期列出文件
另一种方法是使用globstar
可以启用的shopt -s globstar
ls -ltR **/*.mb
Run Code Online (Sandbox Code Playgroud)
第一个**/
将匹配任何任意子目录路径。然后*.mb
与这些目录中的文件匹配
环球之星
如果设置,
**
文件名扩展上下文中使用的模式将匹配所有文件以及零个或多个目录和子目录。如果模式后跟 a/
,则只有目录和子目录匹配。https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html