Localizando os últimos diretórios de profundidade dentro de todos os diretórios com o mesmo nome

0

Eu já vi a pergunta: Encontrando subdiretórios em todos os diretórios com o mesmo nome

Agora, minha estrutura de diretórios é:

$ find .

.
./4
./4/1
./2
./2/1
./5
./5/1
./1
./1/1
./3
./3/1

Eu quero listar todos os diretórios no final com "1" em seu nome:

./4/1
./2/1
./5/1
./1/1
./3/1

mas eu não quero

./1

Eu tentei os seguintes comandos:

find . -name "*1*"
find . -type d -path '*/1*'
find . -path '*/1*' -depth 2 -type d
find . -depth 2 -path '*/1*' -type d

UPDATE

find . -depth 2

indica o erro:

find: paths must precede expression: 2

Encontrei minha solução

find -mindepth 2 . -type d -path "*1*"

Alguém pode explicar por que a profundidade não funcionou enquanto -mindepth funcionava?

    
por Gaurav Kumar 30.01.2018 / 12:39

1 resposta

1

Resposta

find -mindepth 2 . -type d -path "*1*"

Explicação encontrada aqui

— Option: -maxdepth levels

Descend at most levels (a non-negative integer) levels of directories below the command line arguments. ‘-maxdepth 0’ means only apply the tests and actions to the command line arguments.

— Option: -mindepth levels

Do not apply any tests or actions at levels less than levels (a non-negative integer). ‘-mindepth 1’ means process all files except the command line arguments.

— Option: -depth

Process each directory's contents before the directory itself. Doing this is a good idea when producing lists of files to archive with cpio or tar. If a directory does not have write permission for its owner, its contents can still be restored from the archive since the directory's permissions are restored after its contents.

Eu fiquei confuso entre essas opções.

    
por 30.01.2018 / 13:18