Bir yönetmenin içeriğini bir ağaç biçiminde görüntülemek zorunda olduğum bir bash betiği üzerinde çalışıyorum. Bunu başarmak için tek gömlekler olduğunu biliyorum, ancak yinelemeli bir algoritma kullanarak anlamaya çalışıyorum.Bash Komut Dosyası Yinelemeli Dizin Ağacı
#!/bin/bash
tree(){
space=$2
if [ -d $1 ]
then
printf "%s" $space "-----|" $1
printf "\n"
cd $1
space="$space-----|"
for a in *
do
tree $a $space
done
cd ..
else
printf "%s" $space "-----|" $1
printf "\n"
fi
}
cd $1
for file in *
do
space="|"
tree $file $space
done
Ben dizini "Dir" içeren dizinleri "AltDiz1" var "AltDiz2", "SubDir3" ve "filem" dosyası: Burada
Ben bugüne kadar ne olduğunu. "SubDir1", "filea", "fileb" ve "filec" dosyalarını içerir. "SubDir2", "SubSubDir" dizinini ve "fileg", "fileh" ve "filei" dosyalarını içerir. "SubSubDir" dizini "dosyalanmış", "filee" ve "filef" dosyalarını içerir. "SubDir3" dizini dosyaları "filej" "filek" ve "filel" içeriyor. Aşağıdakikomut satırında ./dirtree Dir girmek
görüntülenir: i dizin SubSubDir olmayan aracılığıyla|-----|SubDir1
|-----|-----|filea
|-----|-----|fileb
|-----|-----|filec
|-----|SubDir2
|-----|-----|SubSubDir
|-----|-----|-----|filed
|-----|-----|-----|filee
|-----|-----|-----|filef
|-----|-----|-----|fileg
|-----|-----|-----|fileh
|-----|-----|-----|filei
|-----|SubDir3
|-----|-----|filej
|-----|-----|filek
|-----|-----|filel
|-----|filem
Bu çıkış o g dosyaları dışında neredeyse doğrudur. Sorun benim boşluklarımda bir yer. Bir dosya önceki alt dizinde bulunmadığında tire işaretlerini sıfırlamam gerekir, ancak bu yineleme işlemini yapabilen bir yöntem bulmalıyım, böylece çizgi sayısı ağacın derinliğine uygun olmalıdır.
Yardımlarınız için teşekkürler.
Teşekkürler @chepner! – tfreiner