![如何获取某个文件夹内每个文件夹的名称](https://linux22.com/image/189082/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E5%86%85%E6%AF%8F%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E5%90%8D%E7%A7%B0.png)
我正在编写一个 bash 脚本,需要列出某个文件夹内的所有文件夹名称,并从每个文件夹内的文件打印它们的描述。这是一个示例文件系统:
main
||
\/
folder1
folder2
folder3
folder4
template
除了文件夹之外的每个文件夹内main
都有一个名为description
(包括template
文件夹)的文件,这里是一个示例描述文件:
folder1
=======
contains:
* x
* y
* z
这些文件夹可能会更改名称、添加更多文件夹以及删除一些文件夹。所以我不想硬编码任何数字或名称
我想仅使用 bash 来打印所有文件夹及其描述,如果有任何其他程序(cat、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
预先非常感谢!
答案1
我思考你想要的是这样的:
for dir in /home/USER/main/*/; do
dirname=$(basename "$dir")
if [[ "$dirname" != "template" ]]; then
echo "$dirname"
cat "$dir"/description
fi
done