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

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

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

cd $( ls -ltrd */ | tail -1 | awk '{ print $8 }' )

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

答案1

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

cd  "$(\ls -1dt ./*/ | head -n 1)"

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

如果您不介意切换到 zsh:

cd ./*(/om[1])

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

cd ./*(-/om[1])

答案2

不依赖 的输出ls,并假设 GNU coreutils:

cd "$(stat --printf='%Y:%n\0' ./*/ | sort -zt: -k1nr | head -zn1 | cut -zd: -f2-)"

答案3

尝试这个简短的版本命令

cd $(ls -t | head -n 1)   

答案4

同样,前面已经说过

cd $(ls -td <prefix for the path and file name>* | head -n 1)

应该也能工作。

相关内容