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

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

与这篇文章相关的,cd 到最近修改的子目录

bash cd "$(\ls -1dt ./*/ | head -n 1)"
zsh cd ./*(/om[1])

更改为最近修改的目录。

但没有脚本鱼壳

当使用 config.fish 中的 bash 代码时,它显示

$(...) is not supported. In fish, please use '(\ls)'

有人可以帮忙吗?

答案1

你尝试了什么?特别fish是告诉你使用'(\ls)'。所以

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

似乎是基于 10 秒的实验。编辑:删除\字符。

答案2

在鱼中,你不能使用$(command),你必须使用(command)更多信息

另外,在fish中,前面的反斜杠ls应该替换为command

总结一下,使用:

cd  (command ls -1dt ./*/ | head -n 1)

答案3

而不是依赖于 的输出ls,并假设您有 GNU coreutils:

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

答案4

你可以做

ls -dt ./*/ | read newest && cd $newest

但请注意,它不适用于包含换行符的文件名。

使用最新版本的 GNU ls,您可以通过以下方式解决它:

ls --zero -dt ./*/ | read -z newest && cd $newest

或者你可以这样做:

zsh -c 'print -rNC1 ./*(/om[1])' | read -z newest && cd $newest

或者也*(-/om[1])像方法中一样考虑目录的符号链接(及其目标的修改时间)*/

相关内容