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