-
Notifications
You must be signed in to change notification settings - Fork 0
/
tree_bash_structures.sh
48 lines (40 loc) · 1.49 KB
/
tree_bash_structures.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/bash
# Nome do arquivo de saída
OUTPUT_FILE="output.txt"
# Nome do próprio script
SCRIPT_NAME=$(basename "$0")
# Limpa o conteúdo do arquivo de saída
> $OUTPUT_FILE
# Função para imprimir o conteúdo do diretório e dos arquivos
print_contents() {
local dir="$1"
local prefix="$2"
# Verifica se o diretório existe e não está vazio
if [ ! -d "$dir" ] || [ -z "$(ls -A "$dir")" ]; then
return
fi
# Lista os conteúdos do diretório atual
for entry in "$dir"/*; do
[ -e "$entry" ] || continue # Pula se a entrada não existe
local entry_name=$(basename "$entry")
if [ "$entry_name" != "$SCRIPT_NAME" ] &&
[ "$entry_name" != "$OUTPUT_FILE" ] &&
[ "$entry_name" != "venv" ] &&
[ "$entry_name" != "README.md" ] &&
[ "$entry_name" != ".gitignore" ] &&
[[ "$entry_name" != *.sh ]]; then
if [ -d "$entry" ]; then
# Se for um diretório, chama a função recursivamente
print_contents "$entry" "$prefix$entry_name/"
elif [ -f "$entry" ]; then
# Se for um arquivo, imprime o nome e o conteúdo
echo "$prefix$entry_name:" >> $OUTPUT_FILE
cat "$entry" >> $OUTPUT_FILE 2>/dev/null
echo -e "\n" >> $OUTPUT_FILE
fi
fi
done
}
# Chama a função print_contents a partir do diretório atual
print_contents "." ""
echo "Conteúdo listado e escrito em $OUTPUT_FILE"