我有一个具有多个级别的目录结构,在某些目录上有文件名“ file1.txt”
我试图编写一个脚本来查找文件,并写出它们的路径(用空格而不是'/'分隔)以及grep文件内部的一些信息。
我认为find
,while
循环和read
命令的组合是可行的方法,但是现在我不确定。
这个想法是find
文件,然后将列表写入变量。
然后一次遍历那行,并从内部获取文件路径和文本,然后将其写入输出文件。
我最大的尝试是:
#!/bin/bash
outputf='output.dat'
printf "some_text1 some_text2 some_text3 some_text4\n" > "$outputf"
FILE="$(find . -iname "file1.txt" -print0)"
while IFS= read -r -d '' LINE ; do
while IFS="/" read -ra PARTS ; do \
for i in "${PARTS[@]}" ; do
printf '%s ' "$i" >> "$outputf"
done
# grep "some text" $FILE >> "$outputf"
printf "\n" >> "$outputf"
done <<< "$LINE"
done <<< "$FILE"
不幸的是,我仅从第一个printf
命令获得输出。
我期待得到类似以下的内容
some_text1 some_text2 some_text3 some_text4
. path_to_file1 file1.dat sometext
. path_to_file2 file1.dat sometext
. path_to_file3 file1.dat sometext
. path_to_file4 file1.dat sometext
但是,我什至无法获得写入输出文件的文件路径(因此,为什么对grep
命令进行了注释)。