【发布时间】:2015-08-07 18:00:36
【问题描述】:
我在编写 Bash for 循环脚本时遇到问题,该脚本可以提取父目录下许多子目录共有的特定文件的内容。
目录结构:
/Parent/child/grand_child/great_grand_child/file
其中有许多子文件夹、孙文件夹和曾孙文件夹。
我希望我的脚本执行(在伪代码中):
对于每个 grand_child 文件夹,在每个子文件夹中:
- 只搜索一个 great_grand_child 文件夹
- 找到名为0001.txt的文件
- 将 0001.txt 第 10 行的文本打印到输出文件中
- 在输出文件的下一列中,打印提取文本的文件的完整目录路径。
到目前为止我的脚本:
for i in /Parent/**; do
if [ -d "$i" ]; then
echo "$i"
fi
done
我可以帮助设计这个脚本吗? 到目前为止,这为我提供了每个 grand_child 文件夹的路径,但我不知道如何仅隔离一个 great_grand_child 文件夹,然后在 great_grand_child 文件夹内的 0001.txt 文件的第 10 行中询问文本。
【问题讨论】:
-
每个孙文件夹是否只有一个
0001.txt文件,或者在不同的曾孙文件夹中是否可以有多个这样的文件?如果有很多,使用哪一个有关系吗?是否有任何文件夹名称包含空格或其他尴尬字符?另外,父文件夹是/Parent还是./Parent(又名Parent)?你在问题中都提到了,所以不清楚。 -
好问题。 0001.txt 位于每个 GREAT_grand-child 文件夹中,因此任何 grand_child 文件夹中都有许多 0001.txt(每个 great_grand_child 一个)。不过,使用哪个 0001.txt 并不重要 - 对于每个 grand_child 文件夹,它们在第 10 行都有相同的数据。除了数字、文本和下划线字符“_”之外,文件夹名称不包含空格或任何内容