Como posso colar arquivos com o mesmo nome de diretórios diferentes?

1

Eu tenho outra pergunta.

Eu tenho três diretórios diferentes, mas eu tenho os mesmos arquivos dentro, com o mesmo nome. Por exemplo:

Directory1:

dir1/file1.txt
dir1/file2.txt
dir1/file3.txt

Directory2:

dir2/file1.txt
dir2/file2.txt
dir2/file3.txt

Directory3:

dir3/file1.txt
dir3/file2.txt
dir3/file3.txt

Eu gostaria de colar os arquivos com o mesmo nome. Goste:

dir1/file1.txt + dir2/file1.txt + dir3/file1.txt = file1.txt

dir1/file2.txt + dir2/file2.txt + dir3/file2.txt = file2.txt

dir1/file3.txt + dir2/file3.txt + dir3/file3.txt = file3.txt

Como posso fazer isso?

    
por Matias 14.04.2017 / 20:35

2 respostas

1

Se você quiser concatenar o conteúdo do arquivo, poderá fazer isso

cat dir*/file1 > file1
cat dir*/file2 > file2
cat dir*/file3 > file3

O curinga fará o comando cat ler o conteúdo de todos os dirs / files correspondentes ao padrão, assim você obterá o conteúdo dos arquivos com o mesmo nome em todos os três diretórios gravados no arquivo resultante.

    
por 14.04.2017 / 20:58
1

Supondo que você saiba apenas os nomes dos diretórios, mas não os nomes dos arquivos, salve os nomes dos arquivos de um dos diretórios de uma matriz e, em seguida, itere os elementos, removendo o nome do diretório e colando o nome do arquivo resultante cada diretório:

files=(dir3/*)
for p in "${files[@]}"; do 
f=${p#*/}; paste dir1/"$f" dir2/"$f" dir3/"$f" > "$f"; done

Note que ele poderia ser golfed mais curto se um glob fosse usado para fazer com que o shell o expandisse (os nomes dos diretórios seriam então usados em ordem lexicográfica), por exemplo,

for p in "${files[@]}"; do f=${p#*/}; paste dir*/"$f" > "$f"; done
    
por 14.04.2017 / 21:20

Tags