Altere o diretório usando ls | cauda -1

0

Eu quero ir no diretório com base no maior número de diretório.

Caminho: /home/cg/root/2018/01 . Dentro deste caminho eu tenho vários diretórios como abaixo

15
16
17
So on..

Nesse caso, o diretório mais alto é 17 , então quero mover no diretório 17 ... Se um diretório chamado 18 existir, em seguida, você deseja ir em 18 .

Existe alguma maneira que possa ser feita usando o comando cd ?

Como:

cd /home/cg/root/2018/01/$(ls |tail -1)
    
por Satya 18.01.2018 / 20:19

5 respostas

1

Você pode usar find sort e head para fazer isso

cd $(find /home/cg/root/2018/01/* -type d | sort -r | head -1) deve fazer o truque

    
por 18.01.2018 / 20:27
0

Isso fará isso

cd $(ls /home/cg/root/2018/01 | sort -n -r | awk 'NR==1 {print $1})
    
por 18.01.2018 / 20:41
0

Usando uma matriz bash (temporária) dentro de uma função:

cdhighest() {
  local dirs=(/home/cg/root/2018/01/*)
  cd -- "${dirs[-1]}"
}

Em seguida, basta executar cdhighest e você será direcionado para o diretório em / home / cg / root / 2018/01 que classifica por último.

Referência:

por 18.01.2018 / 20:57
0

O que você parece ter que funcionar, exceto que ls deve ser informado para listar o conteúdo do diretório correto. Mas não listaria os caminhos completos e há muitos outros detalhes. Além disso, as coisas listadas em Por que você não deve analisar a saída de ls (1)

Como o shell pode listar nomes de arquivos e, na verdade, os classifica, poderíamos usar apenas printf com o glob:

$ cd "$(printf "%s\n" /home/cg/root/2018/01/*/ |tail -1)"

Claro, isso requer que os nomes dos diretórios não contenham novas linhas.

    
por 18.01.2018 / 21:00
0

Você pode fazer isso de maneira simples.

cd /home/cg/root/2018/01; cd 'ls -r | head -n 1'
    
por 19.01.2018 / 06:35

Tags