No Linux, eu tenho um arquivo que contém, entre outros, muitos arquivos e diretórios contendo o "sucata" literal. Posso vê-los digitando ls *scrap*
sem problemas. No entanto, isso retorna também diretórios contendo o "sucata" literal e eu gostaria de excluí-los.
Tentei brincar com ls | grep ".*scrap.*"
or ls | grep scrap
mas isso retorna apenas os diretórios (não os arquivos normais).
Porque isto é assim?
A próxima etapa será (assim que o representante retornar a saída correta) remover os diretórios dessa saída. Sugestões sobre como fazer isso também são bem-vindas!
Responder1
Na verdade, para eventualmente listar todos os arquivos regulares no diretório atual (no primeiro nível) que possuem scrap
seus nomes, você não precisa ls
de + grep
.
Com o velho e bomfind
comando:
find . -maxdepth 1 -type f -name "*scrap*" -ls
Responder2
Você enfrenta problemas ls
quando grep
os nomes dos 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 geralmente você deve usar a find
abordagem.
Responder3
Para os nomes dos arquivos que não são de diretório no diretório atual que contêm scrap
, em zsh
:
print -rC1 -- *scrap*(ND^/)
Observe que em ls *scrap*
(ou mais correto ls -- *scrap*
), se algum dos *scrap*
arquivos for do tipodiretório, então ls
listará seusconteúdo(com um that-scrap-dir:
cabeçalho, a menos que *scrap*
expanda em um e apenas um arquivo que seja esse diretório).
Se você quiser isso para arquivos do tipodiretório, ls
apenas imprime seu nome como para outros tipos de arquivos, você precisará adicionar a -d
opção:
ls -d -- *scap*(D^/)
Mas não faz sentido usar, ls
já que todo o trabalho de localização de arquivos por nome e tipo foi feito pelo shell no momento em que ls
é invocado, você também pode usar o interno print
ou printf
o do seu shell.
Responder4
Parece queesseé a resposta que você está procurando. A postagem fala sobre a expansão global ser a razão pela qual apenas certas coisas estão aparecendo.