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

时间:2013-12-10 11:26:29

标签: bash

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

我知道我应该使用head -n 3来列出文件的前几行,但我不知道如何搜索提供的模式以及如何将它们放在一起。

非常感谢您的所有答案。

3 个答案:

答案 0 :(得分:2)

不需要,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 file[0-9]
==> file1 <==
file1 line 1
file1 line 2
file1 line 3

==> file2 <==
file2 line 1
file2 line 2
file2 line 3

==> file9 <==
file9 line 1
file9 line 2
file9 line 3

答案 1 :(得分:2)

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

head -3 **/mypattern*.txt

要设置globstar,您可以将以下内容添加到.bashrc:

shopt -s globstar

答案 2 :(得分:1)

find . -type f -name 'mypattern*.txt' -exec head -n 3 {} \;

如果希望下载到子目录中,请在-maxdepth 0之前添加-exec