Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 行末的BASH grep模式文件名_Linux_Bash_Shell - Fatal编程技术网

Linux 行末的BASH grep模式文件名

Linux 行末的BASH grep模式文件名,linux,bash,shell,Linux,Bash,Shell,我刚刚启动了bash,我正在做一个搜索脚本来搜索文件和grep模式。简单的想法: find $HOME -type f | grep $1 在当前脚本中,我匹配包含$1(文件和目录)的所有内容。我只想匹配文件名中的模式,不想匹配路径中的目录。我尝试了很多带有“/.*^$”等符号的高级表达式。。对于一个新用户来说,在某个特定的部分进行grep,但老实说,这有点困难 “剪切工具”不是选项,因为我需要文件的路径 编辑: 正确的例子: $ ./search test /home/user/docum

我刚刚启动了bash,我正在做一个搜索脚本来搜索文件和grep模式。简单的想法:

find $HOME -type f | grep  $1
在当前脚本中,我匹配包含$1(文件和目录)的所有内容。我只想匹配文件名中的模式,不想匹配路径中的目录。我尝试了很多带有“/.*^$”等符号的高级表达式。。对于一个新用户来说,在某个特定的部分进行grep,但老实说,这有点困难

“剪切工具”不是选项,因为我需要文件的路径

编辑:

正确的例子:

$ ./search test
/home/user/documents/test.txt
/home/user/downloads/blahtestblah.py
错误示例:

$ ./search test
/home/user/test/whatever.txt

在不正确的示例中,grep匹配路径中的关键字,匹配目录。

^
匹配字符串的开头。尝试:

find $HOME -type f | grep  "/.*$1$"
您也可以使用
-regex
开关切换到
find
,而不是通过管道将输出传输到
grep

find $HOME -type f -regex ".*$1$"

您能否向我们展示一个实际的示例输入和您期望从iTunes
basename
中获得的输出,比如
find$HOME-type f | grep$(basename$1)
,但您为什么这样做呢?这不是一种有效的方法,
find
可以在没有
grep
Ty的情况下完成,但不起作用。我使用grep是因为关键字必须在名称中,而不仅仅是名称本身。用一些例子编辑你应该通过查找教程,我认为你缺少了它的一些基本功能。也许吧。祝你好运,但差不多!,您的第一个脚本在扩展部分中匹配。例如,如果执行此操作,“/search py”将返回所有.py文件。