私は特定のフォルダ内のすべてのフォルダ名を一覧表示し、各フォルダ内のファイルの説明を印刷する必要がある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