Как передать результаты от 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`"