我需要搜索目录中的模式,并将包含它的文件的名称保存在数组中。
搜索模式:
grep -HR "pattern" . | cut -d: -f1
这将打印出包含" pattern"。
的所有文件名如果我尝试:
targets=$(grep -HR "pattern" . | cut -d: -f1)
length=${#targets[@]}
for ((i = 0; i != length; i++)); do
echo "target $i: '${targets[i]}'"
done
这只打印一个包含所有电影名字的字符串的元素。
output: target 0: 'file0 file1 .. fileN'
但我需要:
output: target 0: 'file0'
output: target 1: 'file1'
.....
output: target N: 'fileN'
如果不对目标进行枯燥的拆分操作,我怎样才能达到结果?
答案 0 :(得分:50)
您可以使用:
targets=($(grep -HRl "pattern" .))
注意在BASH中使用(...)
进行数组创建。
此外,您可以使用grep -l
仅获取grep
输出中的文件名(如我的命令所示)。