Respostas:
O equivalente direto é
find . -iname <filename>
que listará todos os arquivos e diretórios chamados <filename>no diretório atual e todos os subdiretórios, ignorando o caso.
Se a sua versão do find não suportar -iname, você poderá usá-lo -name. Observe que -iname, diferentemente , diferencia -namemaiúsculas de minúsculas.
Se você deseja apenas listar arquivos chamados <filename>, e não diretórios, adicione-type f
find . -iname <filename> -type f
Se você quiser usar caracteres curinga, precisará colocar aspas, por exemplo,
find . -iname "*.txt" -type f
caso contrário, o shell o expandirá.
Como outros já apontaram, você também pode:
find . | grep "\.txt$"
grep imprimirá linhas com base em expressões regulares, mais poderosas que curingas, mas com uma sintaxe diferente.
Veja man finde man greppara mais detalhes.
<filename>como marcador para a entrada do usuário é um mau hábito no ambiente de linha de comando, onde na < and >maioria das vezes tem um significado específico. Sugiro que você use filename, talvez FILENAME, para enfatizá-lo. A maioria das pessoas entenderá, e aquelas que não entenderão poderão causar danos se não entenderem que não devem atingir um sinal menor ou maior.
<filename>é uma convenção em grande parte da documentação do UNIX, por isso acho útil que as pessoas estejam cientes disso, mas concordo que FILENAMEpode ser mais fácil de entender.
find -iname <filename>é melhor uma vez que é case-insensitive como DOS
Algumas conchas permitem ls **/filename, o que é bastante conveniente.
shopt -s globstar; echo **/filenameé equivalente a find . -name "filename". Também funciona no zsh.
shopt -s globstar, provavelmente funcionará para você. O globbing recursivo é um recurso que está disponível apenas em alguns shells e, às vezes, não está ativado por padrão.
shoptcomando ativa a opção globstar on. agora isso trabalha como charme. Muito obrigado.
Você pode fazer isso com
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'(não sei se a egrepparte é importante, mas você usou egrepsua resposta, então eu a incluí)
grepusa expressões regulares, enquanto o comando do DOS usa caracteres curinga do shell.
find . -name "*.*"não fará o que você esperaria de um plano de fundo do DOS. Os globos estão próximos o suficiente para serem reconhecidos, enquanto as expressões regulares são um animal totalmente novo.
*.*.*faz em um DOS moderno, como o Windows cmd? Que tal *.*.*.*?
Também pode ser: tree -if </your/path>ou 'pwd'como um caminho
<filename>contiver caracteres curinga, use aspas, por exemplofind . -name '*.txt'.