4

Я знаю, что могу найти каталог, который был недавно изменен с помощью команды ls -ltr, но последний измененный элемент может быть файлом, а не каталогом. Во-вторых, мне все еще нужно ввести имя каталога. Мое имя каталога похоже на хэш-код, который на самом деле не читается, и каждый раз набирать текст довольно больно.

Любой простой однострочник, чтобы сделать это?

2 ответа2

7
cd "$(ls -dt */ | head -1)"

Сохраните это как псевдоним в ~/.bashrc , например

alias lcd='cd -- "$(ls -dt -- */ | head -1)"'

и теперь lcd в любом каталоге изменится на последний измененный каталог в текущем каталоге.

2

Добавление этой функции в мой ~/.bashrc работает для меня

function lcd(){
cd $(ls -v1td --color=never */ | head -1)
}

Если я пытаюсь определить его как псевдоним, выражение запускается один раз, когда запускается оболочка, и всегда пытается перейти в тот же подкаталог в моем домашнем каталоге. Без оператора --color=never я получаю ошибку -bash: cd: mydir/: No such file or directory упомянутого в другом комментарии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .