Usando o Bash, find
e as opções sort
-t|--field-separator
e -k|--key
:
find_files.sh
:
#!/bin/bash
first_file=$(find . -iname '*.end' | sort -t '.' -k 4.1 | head -1)
IFS='.'
fields=($first_file)
unset IFS
find . -iname "*${fields[3]}.end"
As opções -k|--key
esperam um KEYDEF
da forma field_number . character_number . Quando -t|--field-separator
está em vigor, os números dos campos são calculados com base no separador especificado (nesse caso, .
), em vez de em um espaço em branco.
Em seguida, extraímos o padrão desejado do primeiro arquivo usando o separador de campos de entrada do Bash e pesquisamos o diretório com find
novamente para arquivos correspondentes a esse padrão, no caso de vários arquivos compartilharem o mesmo número de 4 dígitos.
Exemplo:
$ ls -1
abc0.03_1.1921.end
def0.03_9.0311.end
ghi0.03_1.1966.end
jkl1.04_1.1916.end
mno2.04_4.9540.end
pab9.04_1.1994.end
uvx7.04_3.2002.end
yyy1.05_8.0311.end
zzz4.04_1.2097.end
$ ./find_files.sh
./yyy1.05_8.0311.end
./def0.03_9.0311.end