我刚刚开始使用bash,我正在编写一个搜索文件并搜索模式的搜索脚本。简单的想法:
find $HOME -type f | grep $1
在当前脚本中,我匹配包含$ 1(文件和目录)的所有内容。我只想匹配文件名中的模式,我不想匹配路径中的目录。我用#34; /.*^$"等符号尝试了许多高级表达式;等等。在一个特定的部分grep,但老实说,对于一个新用户来说有点困难。
剪切工具不是一个选项,因为我想要文件的路径。
编辑:
正确例子:
$ ./search test
/home/user/documents/test.txt
/home/user/downloads/blahtestblah.py
错误示例:
$ ./search test
/home/user/test/whatever.txt
在错误的示例中,grep匹配路径中的关键字,匹配目录。
答案 0 :(得分:1)
^
匹配字符串的开头。尝试:
find $HOME -type f | grep "/.*$1$"
您也可以使用-regex
切换到find
,而不是将输出汇总到grep
:
find $HOME -type f -regex ".*$1$"