bash: cd 到最近修改的子目录

twb*_*mer 12 bash cd-command date

想知道是否有一种简单和/或可移植的方式来说“更改到最近修改的子目录”。我可以使用lsandawk但可能有更好的方法。

cd $( ls -ltrd */ | tail -1 | awk '{ print $8 }' )
Run Code Online (Sandbox Code Playgroud)

我必须在具有数百个子目录的“输出文件”目录中运行命令,并且 99% 的时间我都想转到最近更改的目录。我不知道目录的名称是什么。

Gil*_*il' 16

假设您的目录不包含任何不可打印的字符:

cd  "$(\ls -1dt ./*/ | head -n 1)"
Run Code Online (Sandbox Code Playgroud)

(请注意,它还会考虑到目录的符号链接)。

如果您不介意切换到 zsh:

cd ./*(/om[1])
Run Code Online (Sandbox Code Playgroud)

或者像第一个示例一样包含指向目录的符号链接:

cd ./*(-/om[1])
Run Code Online (Sandbox Code Playgroud)