Considerando sua resposta, você não quer realmente criar um arquivo de texto, mas apenas procurar por arquivos e processá-los. Você pode usar o comando find para isso, por exemplo, para renomear todos os arquivos terminados em .i substituindo i por o do:
find -maxdepth 1 -type f -name "*.i" -exec bash -c 'mv "$0" "${0/i/o}"' "{}" \;
Explicações
-
-maxdepth 1 fica no diretório atual
-
-type f somente arquivos de pesquisa
-
-name "*.i" arquivos de pesquisa que terminam em .i
-
-exec executa o seguinte comando no arquivo, {} é substituído pelo nome do arquivo, precisa ser finalizado com \;
-
bash -c inicia um subshell executando os seguintes comandos, adicionando "{}" , damos a ele o nome do arquivo como argumento 0
-
mv "$0" "${0/i/o}" renomeia o arquivo substituindo i por o - apenas um exemplo, é claro, pode ser substituído por qualquer comando (cadeia de) que você goste
-
\; termina a opção -exec
Para comandos que podem levar mais de um arquivo de cada vez, você pode substituir \; by + para encadear os argumentos, veja Qual é a diferença entre usar '+' (mais) e ';' (ponto-e-vírgula) no comando -exec? .