Bash脚本-搜索名称与模式匹配的文件

Bash脚本-搜索名称与模式匹配的文件,bash,Bash,我正在尝试编译一个简单的bash脚本。它应该搜索名称与提供的模式匹配的文件(模式作为参数提供),并列出文件的前几行。所有文件都将位于一个目录中 我知道我应该使用head-n3列出文件的前几行,但我不知道如何搜索提供的模式以及如何将其组合在一起 非常感谢你的回答 find . -type f -name 'mypattern*.txt' -exec head -n 3 {} \; 如果不想进入子目录,请在-exec之前添加-maxdepth 0 如果您不想进入子目录,请在-exec之前添加一个-

我正在尝试编译一个简单的bash脚本。它应该搜索名称与提供的模式匹配的文件(模式作为参数提供),并列出文件的前几行。所有文件都将位于一个目录中

我知道我应该使用
head-n3
列出文件的前几行,但我不知道如何搜索提供的模式以及如何将其组合在一起

非常感谢你的回答

find . -type f -name 'mypattern*.txt' -exec head -n 3 {} \;
如果不想进入子目录,请在
-exec
之前添加
-maxdepth 0


如果您不想进入子目录,请在
-exec
之前添加一个
-maxdepth 0

确实不需要,shell将为您创建模式:

head -3 *.c
==> it.c <==
#include<stdio.h>
int main()
{

==> sem.c <==
#include <stdio.h>          /* printf()                 */
#include <stdlib.h>         /* exit(), malloc(), free() */
#include <sys/types.h>      /* key_t, sem_t, pid_t      */

==> usbtest.c <==
head-3*.c

==>it.c sem.c usbtest.c file1 file2 file9真的不需要,shell会为您创建模式:

head -3 *.c
==> it.c <==
#include<stdio.h>
int main()
{

==> sem.c <==
#include <stdio.h>          /* printf()                 */
#include <stdlib.h>         /* exit(), malloc(), free() */
#include <sys/types.h>      /* key_t, sem_t, pid_t      */

==> usbtest.c <==
head-3*.c

==>it.c sem.c usbtest.c file1 file2 file9Bash有一个
globstar
选项,设置该选项后,您可以使用
**
搜索子目录:

head -3 **/mypattern*.txt
要设置globstar,可以将以下内容添加到.bashrc中:

shopt -s globstar

Bash有一个
globstar
选项,设置该选项后,您可以使用
**
搜索子目录:

head -3 **/mypattern*.txt
要设置globstar,可以将以下内容添加到.bashrc中:

shopt -s globstar

您可以使用
\+
而不是
\作为终止符。这将为
exec
命令提供多个文件。您可以使用
\+
而不是
\作为终止符。这将为
exec
命令提供多个文件。
**
将产生与大多数shell中的
*
完全相同的结果。你在用哪个shell?我在用bash。从bash手册页:*匹配任何字符串,包括空字符串。启用globstar shell选项,并在路径名扩展上下文中使用*时,用作单个模式的两个相邻*将匹配所有文件以及零个或多个目录和子目录。如果后跟一个/,两个相邻的*s将只匹配目录和子目录。啊,好的。默认情况下,该shell选项处于禁用状态;也许你应该在你的答案中添加这一点(如何打开它等等),然后它就成为一个有价值的答案:)在大多数shell中,
**
产生的结果与
*
完全相同。你在用哪个shell?我在用bash。从bash手册页:*匹配任何字符串,包括空字符串。启用globstar shell选项,并在路径名扩展上下文中使用*时,用作单个模式的两个相邻*将匹配所有文件以及零个或多个目录和子目录。如果后跟一个/,两个相邻的*s将只匹配目录和子目录。啊,好的。默认情况下,该shell选项处于禁用状态;也许你应该在你的答案中加入这一点(如何打开它等等),这样它才有价值:)