Как передать результаты от LS до CD в Ubuntu

Я хотел бы ls для последнего созданного каталога в данном каталоге (мы создаем новую папку для каждого выпуска), а затем перейдите в этот каталог. Я хотел бы создать для этого псевдоним, поэтому мне не нужно каждый раз вспоминать, как добраться до последней директории.

Вот что я попробовал:

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

Кажется, проблема в том, что если я упорядочиваю результаты, я получаю разрешения на файл в качестве вывода. Любая помощь с благодарностью!

ОБНОВИТЬ:

$cd `ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/* | head -1`
-bash: cd: drwxr-xr-x: No such file or directory

2 ответа

Решение

Ну, вы указали -l возможность ls, что приводит к длинному выходу. Попробуйте бросить это.

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

Вам также необходимо убедиться, что путь добавляется к имени каталога, которое вы хотите. Сделайте это, добавив * к пути и указав -d возможность ls,

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

Для повышения производительности вы также должны head и не переворачивать сортировку.

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

Последняя команда:

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

Несколько вещей, чтобы упомянуть:

  • ls -dt [PATH]/* также будет список файлов; это может быть проблемой, если файлы присутствуют в каталоге.
  • Вы можете использовать кавычки, если имя каталога содержит пробелы.

Итак, пара более быстрых вариантов для вас:

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

или, если поддерживается ls команда,

    cd "`ls -t --group-directories-first ~/workspace/docs/new-docs/Mapper/Documentation | head -1`"
Другие вопросы по тегам