mac: concatena o conteúdo de arquivos de texto em vários diretórios; Anexar nomes de diretórios ao conteúdo do arquivo de texto correspondente

1

Na seguinte estrutura de diretórios:

directory1
-subdirectoryA
--- fileA.txt
-subdirectoryB
--- fileB.txt
subdiretórioC
--- fileC.txt

Gostaria de gerar um arquivo de texto contendo o seguinte texto concatenado:

nome do subdiretório A
-texto contido em fileA.txt
nome do subdiretórioB
-texto contido em fileB.txt
nome do subdiretórioC
-texto contido em fileC.txt

Consegui usar os seguintes comandos para obter o conteúdo dos arquivos de texto concatenados, mas as informações precisam do nome do diretório para organizar a saída:

find ./prefix_common_to_all_target_directories* -name "*.txt" -exec cat '{}' \; > concatenated_extracted_info.txt
    
por goober grape 18.09.2018 / 20:42

1 resposta

1
#!/bin/bash
while read mydir; do
    echo "${mydir}:" >> output.txt
    cat $mydir/*.txt >> output.txt
done < <(find test* -type d )

Isso está circulando por todos os diretórios dentro de directory1 e faz exatamente o que você quer. Por favor, note que você tem que executar este script dentro de directory1 .

Algumas explicações:

Primeiro find test* -type d é executado, que imprime o nome de cada subdiretório por linha. Essa saída é então alimentada em read mydir executando tudo dentro do loop while uma vez para cada linha ( $mydir é atribuído a cada linha (também conhecido como nome subdirectoy)). Em seguida, a primeira linha dentro do loop grava o nome do diretório seguido por dois pontos em output.txt , usando >> , que significa "anexar a um arquivo" (se o arquivo não existir, ele será criado).
A segunda linha dentro do loop grava o conteúdo de cada arquivo *.txt dentro do subdiretório para output.txt , novamente em "append-mode".

Minha configuração de teste (com o script acima salvo como createfile.sh ):

$ ls *
test1:
fileA.txt

test2:
fileB.txt

test3:
fileC.txt
$ bash createfile.sh
$ cat output.txt 
test1:
file content from dir1
test2:
test content from dir2
test3:
test content from dir3
    
por 18.09.2018 / 21:25

Tags