Se você observar a saída de find -name "data.csv" , verá que ela imprime os nomes completos dos arquivos chamados data.csv . O pipeline passa isso para sed , que imprime a segunda linha de sua entrada.
Então o que você está dizendo é: "Aqui está uma lista de arquivos. Dê-me o segundo da lista." O que você realmente quer dizer é "Aqui está uma lista de arquivos. Para cada um, me dê a segunda linha". E para isso, você quer usar xargs .
Provavelmente, você precisará de
find -name "data.csv" -print0 | xargs -0 -n 1 sed -n 2p > final.csv
Geralmente, é uma boa ideia usar find -print0 | xargs -0 : o -print0 faz com que find use caracteres NUL como separadores entre nomes de arquivos em vez de uma nova linha e -0 informa xargs a esperar isso. Isso evita que nomes de arquivos com espaços, retornos ou outros caracteres estranhos atrapalhem seu pipeline.
O -n 1 informa xargs para executar um processo sed separado para cada arquivo "data.csv" que encontrar, em vez de tentar agrupá-los em conjunto, o que geralmente torna as coisas mais eficientes. Neste caso, se você executar
sed -n 2p file1 file2 file3
ele internamente concatenará todos os seus arquivos de entrada em um fluxo de entrada e imprimirá a segunda linha dele. Mas RTFM: pode haver uma maneira de fazer sed não fazer isso, que eu perdi.