Shell
在 vim 中打開最近修改的文件
以下命令有效
$ ls -1t | head -1 git_sync_log20180924_00.txt $ vi git_sync_log20180924_00.txt
但這並不
$ ls -1t | head -1 | vi Vim: Warning: Input is not from a terminal Vim: Error reading input, exiting... Vim: preserving files... Vim: Finished.
我怎樣才能做到這一點(在 vi 中打開最近修改的文件)?
vi -- "$(ls -t | head -n 1)"
(假設文件名不包含換行符)。
或者如果使用
zsh
:vi ./*(om[1])
或者:
vi ./*(.om[1])
只考慮正常文件。
vi ./*(.Dom[1])
還要考慮隱藏文件(好像使用
ls -At
)。無論文件名可能包含什麼字元或字節值,這些都有效。對於與後者等效的 GNU shell&utilities,您可以執行以下操作:
IFS= read -rd '' file < <( find . ! -name . -prune -type f -printf '%T@\t%p\0' | sort -zrn | cut -zf2-) && vi "$file"