Назад | Перейти на главную страницу

как передать результаты с LS на CD в ubuntu

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

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

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

Ну, вы указали -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`"