vi -- "$(ls -t | head -n 1)"
(que assume nomes de arquivos não contêm caracteres de nova linha).
Ou se estiver usando zsh
:
vi ./*(om[1])
Ou:
vi ./*(.om[1])
Para considerar apenas arquivos regulares .
vi ./*(.Dom[1])
Para também considerar arquivos ocultos (como se estivesse usando ls -At
).
Eles funcionam independentemente de quais valores de caracteres ou bytes os nomes de arquivos podem conter. Para um equivalente de utilitários e shell GNU, você pode fazer:
IFS= read -rd '' file < <(
find . ! -name . -prune -type f -printf '%T@\t%pvi -- "$(ls -t | head -n 1)"
' | sort -zrn | cut -zf2-) &&
vi "$file"