Eu olhei para outras questões semelhantes, mas não encontrei uma que me permitisse entender o conceito e torná-lo aplicável à minha situação com base no meu tempo limitado. Estou simplesmente executando o comando find para encontrar certos arquivos, mas alguns arquivos nos subdiretórios têm o mesmo nome que eu quero ignorar. Obrigado por qualquer ajuda. Abaixo está o comando que estou usando:
Os arquivos / padrão em que estou interessado: / dev / abc-scanner, / dev / abc-cash ....
O comando:
find /dev/ -name 'abc-*'
O que está sendo retornado:
/dev/abc-scanner
/dev/abc-cash
...
...
...
/dev/.udev/names/abc-scanner
/dev/.udev/names/abc-cash
Quero ignorar os últimos arquivos: /dev/.udev / ...
Respostas:
Se você apenas deseja limitar a localização ao primeiro nível, pode:
... ou se você deseja excluir particularmente o
.udev
diretório, pode:fonte
xargs
em vez disso, então algo como:find /dev -maxdepth 1 -name 'abc-*' | xargs ls -l
mas se há alguma chance de que eles vão ter espaços em branco nos nomes, você deve fazerfind /dev -maxdepth 1 -name 'abc-*' -print0 | xargs -0 ls -l
ls -l /dev/abc-*
for x in /dev/abc-*; do readlink -f $x; done
ls -l /dev/abc-* /dev/*/abc-* | fgrep -v /dev/.udev
... exceto pelo menos no meu Linux/dev/*/*
, não inclui arquivos/dev/.udev/*
para que você possa omitir ofgrep -v
.Existe algum motivo específico que você precisa usar
find
? Você pode apenas usarls
para encontrar arquivos que correspondam a um padrão em um diretório.Se você precisar usar
find
, poderá usar a-maxdepth 1
opção para aplicar apenas ao diretório especificado.fonte
-maxdepth 1
, em vez de-maxdepth 0
ls
. Você pode encontrar os mesmos arquivos comecho
ouwc
o que você tem, porque o shell expande o curinga para você. Assimfor file in /dev/abc-*; do something with each "$file"; done
pode ser o que o OP é realmente procurando.find
não a possui, por exemplo.ls
é supérfluo.for f in abc*; ...
é tudo o que você precisa.Isso pode fazer o que você deseja:
fonte
Nao funciona para mim. Não retorna nada. Se eu apenas fizer '.' ele me fornece todos os arquivos no diretório abaixo daquele em que estou trabalhando.
Não retorne nada com '.' em vez disso, recebo uma lista de todos os arquivos 'grandes' no meu diretório, bem como do diretório rootfiles / onde eu armazeno os antigos.
Continuando. Isso funciona.
Aparentemente,
/dev
significa diretório de interesse. Mas./
é necessário, não apenas.
. A necessidade do/
não era óbvia, mesmo depois que eu descobri o que/dev
significava mais ou menos.Não pude responder como um comentário porque não tenho "reputação".
fonte