识别包含Shell

时间:2017-05-24 07:23:52

标签: linux bash shell unix

输入: 文本文件:backup_list.txt

/home/common/xyz_V*.txt /home/common/hello.txt /home/mutaq/xya_*_logs.txt /home/mutaq/xygs.txt

文字:/home/mutaq/xya_Juvi_V1.01_logs.txt

现在我想在文件中匹配此文本。 由于文件的行/home/mutaq/xya_*_logs.txt类似于文本/home/mutaq/xya_Juvi_V1.01_logs.txt,因此将星号(*)视为表示其间多个字符的字符。

现在我想知道文件中是否存在文本。

使用grep,我无法区分星号。 一种方式我发现我可以首先遍历backup_list.txt 并为每一行调用ls命令并将其存储在某个地方然后,我可以直接将文本与存储的值匹配。

但是有没有更好的方法来做到这一点,这样我可以使用该文件搜索文本目录?

1 个答案:

答案 0 :(得分:0)

第一个答案可能是grep -f选项,允许grep参与文件传递参数搜索。你可以尝试:

ls /path/to/files/ | grep -f backup_list.txt

但是要将backup_list.txt内容作为模式赋予grep,'*'必须替换为'。*'来表示任何字符0或n时间和'。'必须被'\。'取代匹配 '。'角色而不是任何角色。

您可以使用sed进行替换。

希望得到这个帮助。