Localizando subdiretórios no linux

1

Eu estou tentando pesquisar em todos os subdiretórios no diretório atual por um diretório chamado 'jdk1.7'. Eu escrevi uma declaração como %código% Mas eu não estou obtendo nenhum resultado. Verifiquei que o diretório está presente na hierarquia de diretórios do diretório atual.

    
por nishant 29.06.2014 / 01:10

1 resposta

2

Existem duas possibilidades:

  • jdk1.7 não é um diretório real.

  • jdk1.7 é um diretório, mas não um subdiretório real de . .

Considere o seguinte exemplo:

$ mkdir a a/jdk
$ touch a/jdk/somefile
$ mkdir b c
$ ln -s ../a/jdk b/
$ ln -s ../a c/
$ find -L | sort
.
./a
./a/jdk
./a/jdk/somefile
./b
./b/jdk
./b/jdk/somefile
./c
./c/a
./c/a/jdk
./c/a/jdk/somefile
$ find a -type d -name jdk
a/jdk
$ find b -type d -name jdk
$ find c -type d -name jdk

Para fins práticos, jdk pode ser considerado como um subdiretório de a , b e c . No entanto, o comando find será bem-sucedido apenas para o primeiro.

./b/jdk é um link simbólico para a/jdk , portanto, não corresponderá ao predicado -type d . Ele corresponderia a -type l , mas também os links simbólicos para arquivos.

./c/a/jdk é um diretório real, mas ./c/a é apenas um link simbólico para ./a . Por padrão, o find não segue links simbólicos, por isso não examinará o conteúdo aparente de ./c/a .

Para instruir a localizar os links simbólicos sempre que eles forem encontrados, use o sinalizador -L :

$ find -L a b c -type d -name jdk
a/jdk
b/jdk
c/a/jdk
    
por 29.06.2014 / 03:49