저는 특정 폴더 내의 모든 폴더 이름을 나열하고 각 폴더 내의 파일에 대한 설명을 인쇄해야 하는 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