我可以使用哪个命令来:
- 输入当前目录中最后修改的目录。
- 如果不存在或无法进入目录,则不执行任何操作。
我正在寻找一个名为 的别名ca
,它至少可以在 中使用zsh
,而且如果可能的话,也可以在bash
和中使用ash
。
答案1
这是一种可能的解决方案:
alias ca='cd $(find . -maxdepth 1 -type d -printf "%T@ %p\n" | sort -n | tail -1 | cut -d" " -f2-)'
但它存在以下问题:
- 直接使用 的输出
find
而不使用类似 的内容print0
,这会导致名称中带有空格的目录无法正确处理。 - 如果这是最后修改的目录,则输入
.
,而不是.
.
答案2
据我所知,这应该有效(尽管不是别名zsh
):bash
ca() {
local dir newer
for dir in ./*; do
if [[ ! -d "${dir}" ]]; then
continue
fi
if [[ "${dir}" -nt "${newer}" ]]; then
newer="${dir}"
fi
done
if [[ -x "${newer}" ]]; then
cd -- "${newer}"
fi
}