Supondo que não há espaços ou similares em nenhum dos seus nomes de arquivos, existem algumas maneiras de fazer isso. Uma é apenas usar uma matriz:
files=( $(find -mtime -2) )
a=${files[1]}
b=${files[2]}
files
será uma matriz de todos os caminhos gerados por find
em ordem, indexados de zero. Você pode obter as linhas que quiser com isso. Aqui salvei a segunda e a terceira linhas em a
e b
, mas você também pode usar os elementos da matriz diretamente.
Uma alternativa se você tiver o GNU find ou outro com a opção printf
é usá-lo em combinação com read
e substituição de processos :
read junk a b junk < <(find -printf '%p ')
Este transforma toda a saída de find
em uma única linha e fornece essa linha como entrada para read
, o que salva a primeira palavra (caminho) em junk,
o segundo em a
, o terceiro em b
e o restante da linha em junk
novamente.
Da mesma forma, você pode introduzir o paste
command para o mesmo efeito em qualquer POSIX sistema compatível:
read junk a b junk < <(find -mtime -2 | paste -s)
paste -s
converterá sua entrada em uma única linha separada por tabulação, com a qual read
poderá lidar novamente.
No caso geral, se você estiver satisfeito em executar o comando principal mais de uma vez (não é necessário aqui), você pode usar sed
facilmente:
find | sed -n 2p
Isso imprimirá apenas a segunda linha da saída, suprimindo a saída comum com -n
e selecionando a linha 2 para p
rint. Você também pode unir head
e tail
para o mesmo efeito, o que provavelmente será mais eficiente em um arquivo muito longo.
Todos os itens acima têm o mesmo efeito de armazenar as segundas e terceiras linhas em a
e b
, e todos ainda têm a suposição de que não há espaços, tabulações, novas linhas ou quaisquer outros caracteres que aconteçam esteja em seu valor do separador de campo de entrada ( IFS
) em qualquer um dos nomes de arquivo.
Note que a ordem de saída de find
é indefinida, então "segundo arquivo "não é realmente um identificador útil, a menos que você esteja organizando para que seja solicitado de outra maneira. É provável que seja algo próximo da ordem de criação em muitos casos, mas não em todos.