como canalizar resultados de LS para CD no Ubuntu

1

Eu gostaria de ls para o diretório criado mais recente em um determinado diretório (criamos uma nova pasta para cada versão) e, em seguida, cd para esse diretório. Eu gostaria de criar um alias para isso, então não preciso lembrar como chegar ao diretório mais recente sempre que preciso.

Veja o que tentei:

ls -ltr ~/workspace/docs/new-docs/Mapper/Documentation/ | tail -1 | cd
cd $(ls -ltr ~/workspace/docs/new-docs/Mapper/Documentation/ | tail -1)

o problema parece ser que, se eu pedir os resultados, termino com as permissões no arquivo como saída. Qualquer ajuda é muito apreciada!

ATUALIZAÇÃO:

$cd 'ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/* | head -1'
-bash: cd: drwxr-xr-x: No such file or directory
    
por Ramy 11.03.2014 / 21:32

2 respostas

4

Bem, você especificou a opção -l para ls , o que resulta em uma saída longa. Tente soltá-lo.

ls -tr ~/workspace/docs/new-docs/Mapper/Documentation/

Você também precisará garantir que o caminho seja anexado ao nome do diretório desejado. Faça isso adicionando * ao caminho e especificando a opção -d para ls .

ls -dtr ~/workspace/docs/new-docs/Mapper/Documentation/*

Para melhorar o desempenho, você também deve canalizar para head e não inverter o tipo.

ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/* | head -1

O comando final é:

cd 'ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/* | head -1'
    
por 11.03.2014 / 21:35
1

Algumas coisas para mencionar:

  • ls -dt [PATH]/* também listará arquivos; isso pode ser um problema se os arquivos estiverem presentes no diretório.
  • você pode querer usar aspas, caso o nome do diretório contenha espaços.

Então, mais algumas opções rápidas para você:

    cd "'ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/*/ | head -1'"

ou, se suportado pelo comando ls ,

    cd "'ls -t --group-directories-first ~/workspace/docs/new-docs/Mapper/Documentation | head -1'"
    
por 12.03.2014 / 00:41

Tags