Answers:
我认为bash
无法做到这一点,因此您可以尝试一下zsh
。我不是zsh用户,但我认为此配置应该有效:
autoload -U compinit
compinit
zstyle ':completion:*' file-sort modification reverse
(reverse
此处显示列表末尾的最新文件,因为上部可能无法在屏幕上看到。)
有时我需要在我的下载目录中找到最新下载的文件,但可能不知道确切的文件名。这是我的方法。
ls -rt ~/Downloads
ls -t
按时间而不是名称列出文件,最新的文件首先显示。由于我的下载目录包含太多文件,因此我不想滚动到列表顶部以查看最新文件。 ls -rt
反转列表的顺序,在列表底部显示最新文件。
从那里,您可以轻松完成所需的工作。例如:
unzip $(ls -rt ~/Downloads | tail -n1)
要么
mv $(ls -rt ~/Downloads | tail -n1) *some_other_location*
您最初的问题可以这样完成:
7z l $(ls -rt ~/Downloads | tail -n1)
我意识到这不是坚持使用Tab键完成方法,但它可能适合您的需求。
rl
与ls -lhtc "$@" | head -n $N
此相关的脚本。
我将按照以下步骤进行操作
1. First I will find the files and their timestamps 2. Sort them reversely 3. Take top N 4. Get the filenames 5. Zip it or do whatever u like
脚本看起来像这样(可能很复杂)
find ~/Downloads/ -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -N | cut -d' ' -f3 | xargs 7z l
rl
(最近的列表)。但是我需要明确地调用它,然后复制并粘贴。我希望它与制表符完成功能更加集成。
在bash中,您可以使用以下方法获得接近的结果:
7z l ~/Downloads/
Alt+n
其中bind
已映射Alt+n到重写READLINE_LINE
变量的函数。
为了大致完成制表符的完成,我使用了一个arguments-parsing-perl-kludge并fzf
提出了一个菜单。
https://github.com/WillForan/fuzzy_arg/blob/master/fuzzy_new_complete.bash