进入最后修改的目录

进入最后修改的目录

我可以使用哪个命令来:

  • 输入当前目录中最后修改的目录。
  • 如果不存在或无法进入目录,则不执行任何操作。

我正在寻找一个名为 的别名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
}

相关内容