caminho da pasta dentro de uma pasta no terminal

1

Eu tenho vários arquivos salvos como

Year -> Month -> Day -> bunch of .nc files

Eu gostaria de gerar uma lista de todos os diretórios que contêm os arquivos nc. Eu posso listar o caminho de cada arquivo nc com:

find /Year/ -name *.nc | sort > directory_list.txt

que localiza cada arquivo .nc nos subdiretórios dessas pastas neste arquivo principal. Esses resultados são salvos em um arquivo de texto 'directory_lists'.

/2000/01/01/nc_file1.nc
/2000/01/01/nc_file2.nc
/2000/01/01/nc_file3.nc
/2000/01/02/nc_file3.nc
/2000/01/03/nc_file3.nc

e assim por diante ... Como é possível modificar ligeiramente isso para que eu tenha uma lista de cada diretório 'Day'? Isso seria semelhante aos resultados obtidos com o comando acima, mas sem as informações sobre o arquivo nc incluído.

Eu tentei:

find /Year/ | sort > directory_list.txt

mas isso retorna cada caminho

/Year/
/Year/Month
/Year/Month/Day

Eu gostaria que o resultado fosse:

/2000/01/01/
/2000/01/02/
/2000/01/03/

e assim por diante ... sem o nome do diretório sendo repetido

Eu acho que isso é o mesmo que tentar obter o diretório da pasta de terceiro nível dentro do diretório Year? Qualquer conselho seria apreciado.

    
por Emma Tebbs 01.12.2015 / 10:28

2 respostas

1
find /Year/ -name '*.nc' | sed -e 's:/[^/]*$:/:' | sort -u

Fornecerá a lista de diretórios que contém pelo menos um arquivo cujo nome corresponde a '* .nc'

    
por 01.12.2015 / 10:39
0

egrep '/[^/]+/[^/]+/' directory_list.txt

Isso fornece todas as linhas que contêm exatamente 3 / , que é a profundidade do diretório que você deseja.

    
por 01.12.2015 / 10:38