想知道是否有一种简单和/或便携的方式来表示“更改为最近修改的子目录”。我可以使用ls
andawk
但可能有更好的方法。
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)
应该也能工作。