Na verdade, para listar todos os arquivos regulares no diretório atual (no 1º nível) que têm scrap
em seus nomes, você não precisa de ls
+ grep
.
Com o bom e velho comando find
:
find . -maxdepth 1 -type f -name "*scrap*" -ls
No linux, eu tenho um arquivo contém, entre outros, muitos arquivos e diretórios contendo o literal "scrap".
Eu posso vê-los digitando ls *scrap*
sem problema. No entanto, isso também retorna diretórios contendo o "scrap" literal e eu gostaria de excluí-los.
Eu tentei brincar com ls | grep ".*scrap.*"
ou ls | grep scrap
, mas isso retorna apenas os diretórios (não os arquivos normais).
Por que isso acontece?
O próximo passo será (uma vez que o representante retorne a saída correta) para remover os diretórios daquela saída. Sugestões sobre como fazer isso também são bem-vindas!
Você tem problemas com ls
e grep
quando os nomes de arquivos contêm espaços ou (pior) novas linhas. Mas com nomes de arquivos seguros, você pode fazer isso:
ls -l | grep -oP '^-.* \K.*$'
ls -l | sed -n '/^-/s/^.* //p'
Mas normalmente você deve usar a abordagem find
.