我需要在目录中搜索一个模式,并将包含该模式的文件名保存在一个数组中。
搜索模式:
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'
我该如何在不进行繁琐的字符串分割操作的情况下实现这个结果呢?
grep --null -HR
以产生带有 NUL 字节的输出。 - anubhava