Você pode listar todos esses arquivos, remover as extensões, filtrar duplicatas e imprimi-las:
$ ls | grep '\(\.in\|.out\)$' | sed 's/....$//' \
| sort | uniq -c | grep '^[\t ]*2' | sed 's/^[\t ]\+2 //'
Vantagens:
- não precisa de bash
- faz apenas uma operação cara - lista de diretórios - isto é, não precisa stat (2) cada arquivo ( como em
[[ -f ... ]]
)
Caso o ls
já classifique alfabeticamente sua saída, o comando sort
poderá ser removido do canal. Não sei se o POSIX especifica o comportamento de classificação de um ls
.
O canal imprime todos os nomes básicos se os arquivos com .in
e .out
extensão.
Se, então, precisar de uma lista dos arquivos correspondentes, você terá que sufixar a lista com as extensões filtradas anteriormente. Por exemplo, assim:
$ ls | grep '\(\.in\|.out\)$' | sed 's/....$//' \
| sort | uniq -c | grep '^[\t ]*2' \
| sed -e 's/^[\t ]\+2 //' -e 's/$/.in/ ; p; s/in$/out/'