我正在编写一个 bash 脚本,它需要列出某个文件夹内的所有文件夹名称,并从每个文件夹内的文件中打印它们的描述。这是一个示例文件系统:
main
||
\/
folder1
folder2
folder3
folder4
template
在每个文件夹中,除了main
有一个名为description
(包括template
文件夹)的文件外,这里是一个示例描述文件:
folder1
=======
contains:
* x
* y
* z
文件夹可能会更改名称、添加更多文件夹和删除一些文件夹。所以我不想硬编码任何数字或名称
我想只使用bash和尽可能少打印所有文件夹和它们的描述是这样,如果任何其他程序(猫的grep等是确定)并没有在template
文件夹:
**folder1**
folder1
=======
contains:
* x
* y
* z
**folder2**
folder2
=======
contains:
* x
* y
* z
**folder3**
folder3
=======
contains:
* x
* y
* z
**folder4**
folder4
=======
contains:
* x
* y
* z
^请注意,模板文件夹不在我想要的示例输出中
到目前为止,我有这个代码:
function list-all() {
folderlist=()
for file in /home/USER/main/*; do
echo "$(basename "$file")"
done
}
它在垂直列表中打印所有文件夹名称,如下所示:
folder1
folder2
folder3
folder4
template
从这个输出我想得到这个:
folder1
folder1
=======
contains:
* x
* y
* z
folder2
folder2
=======
contains:
* x
* y
* z
folder3
folder3
=======
contains:
* x
* y
* z
folder4
folder4
=======
contains:
* x
* y
* z
非常感谢!
我认为你想要的是这样的:
for dir in /home/USER/main/*/; do
dirname=$(basename "$dir")
if [[ "$dirname" != "template" ]]; then
echo "$dirname"
cat "$dir"/description
fi
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句