输入: 文本文件: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命令并将其存储在某个地方然后,我可以直接将文本与存储的值匹配。
但是有没有更好的方法来做到这一点,这样我可以使用该文件搜索文本目录?
答案 0 :(得分:0)
第一个答案可能是grep -f
选项,允许grep参与文件传递参数搜索。你可以尝试:
ls /path/to/files/ | grep -f backup_list.txt
但是要将backup_list.txt
内容作为模式赋予grep,'*'必须替换为'。*'来表示任何字符0或n时间和'。'必须被'\。'取代匹配 '。'角色而不是任何角色。
您可以使用sed进行替换。
希望得到这个帮助。