递归查找并使用部分文件路径进行输出和更多命令

时间:2019-07-11 16:59:42

标签: bash

我有一个具有多个级别的目录结构,在某些目录上有文件名“ file1.txt”

我试图编写一个脚本来查找文件,并写出它们的路径(用空格而不是'/'分隔)以及grep文件内部的一些信息。

我认为findwhile循环和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命令进行了注释)。

0 个答案:

没有答案