Com “find /”, ignore diretórios como “/ proc”, “/ sys” e similares [duplicados]

4

Existem alguns diretórios que podem causar problemas com a localização e especialmente find / . Estes são diretórios em que o sistema operacional cria arquivos que não são realmente arquivos. Entre esses diretórios estão /proc /sys /run .

O problema é que, se você estiver fazendo algo como find / -exec grep , poderá atrapalhar o sistema se rastrear alguns desses sistemas.

Então, como posso dizer para pular esses diretórios sem listá-los. Porque alguém pode decidir criar um novo diretório como este. Em vez de confiar em uma lista, eu preferiria ter um teste para o diretório e uma opção para excluir os diretórios que falharam neste teste.

    
por Mouse.The.Lucky.Dog 04.08.2014 / 20:31

2 respostas

5

Ok, você não quer depender de uma lista de arquivos excluídos, portanto, não se arrisca a excluir alguns diretórios.

Então, vamos confiar em dizer quais arquivos incluir.

Esses "não realmente arquivos" estão quase todos em sistemas de arquivos separados.
Que são mais como "não são realmente sistemas de arquivos", apenas parecidos.

O que podemos dizer é que eles não estão em nossos sistemas de arquivos "reais".
Assumindo que temos duas partições, montadas em / e '/ home':

Com a opção -xdev , nós executamos find nesses lugares bem conhecidos e nada mais:

find / /home -xdev -exec grep ...

Alguns arquivos estranhos ainda podem ser mixados em nossos arquivos normais (veja "quase todos" acima).

Eles realmente causam problemas: se houver um arquivo fifo esquecido, e você executar grep sobre ele, seu grep tentará ler e apenas esperar para sempre.

Poderíamos excluir todos os tipos perigosos, mas olhando para os possíveis tipos de arquivo para -type , não há muitos deles que realmente precisamos: f , d e l para links simbólicos.
Precisamos apenas tomar cuidado para incluir alguns ou todos os tipos digitados f , d e l ou para excluir b , c , p , s e D . / p>

find / /home -xdev -type f -exec grep ...

ou caso desejemos incluir links simbólicos:

find /home/me/dirWithSomeLinksToFiles -xdev \( -type f -or -type d \) -exec grep ...

    
por 04.08.2014 / 22:15
0

Em vez de se preocupar com os diretórios, por que você não diz para localizar apenas arquivos reais no grep?

find / -type f -exec grep .... {} +

Parece funcionar bem para mim (o grepping kmem não mata a caixa; D).

    
por 04.08.2014 / 22:21