Uma solução muito simples com find
, awk
e bash
. Idéia básica, encontre todos os arquivos com ft1
extension, dê a eles como lista de argumentos de linha de comando para grep
, que gera uma lista de arquivos com strings "especiais", e canalize essa saída para awk
que será string a extensão ft1
e substitua-a pela extensão "log". Finalmente, dê a ele o bash, que irá verificar se existe um arquivo de log com a mesma extensão
find . -type f -iname "*.ft1" -exec grep "special" {} + | awk -F':' '{gsub(/\.ft1/,"");print $1".log"}' | xargs -I {} bash -c " [ -f {} ] && echo {} exists"
Pequena demonstração
xieerqi@eagle:~/testdir2$ ls
one.ft1 one.log three.ft1 two.ft1 two.log
xieerqi@eagle:~/testdir2$ find . -type f -iname "*.ft1" -exec grep "special" {} + | awk -F':' '{gsub(/\.ft1/,"");print $1".log"}' | xargs -I {} bash -c " [ -f {} ] && echo {} exists"
./two.log exists
./one.log exists