$ 7z l ~/下载/Tab
如何使结果列表按日期而不是按名称排序?
我目前使用特殊脚本列出给定目录中的 N 个最新文件(并将文件名手动复制到命令行中),但希望使其无缝且更方便。
答案1
我认为无法bash
做到这一点,所以你可以尝试一下zsh
。虽然我不是 zsh 用户,但我认为这个配置应该有效:
autoload -U compinit
compinit
zstyle ':completion:*' file-sort modification reverse
(reverse
此处可查看列表末尾的最新文件,因为屏幕上可能看不到上面的部分。)
答案2
有时,我需要在“下载”目录中查找最近下载的文件,但可能不知道确切的文件名。我是这样做的。
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 补全方法,但它可能适合您的需求。
答案3
我将为其执行以下步骤
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
答案4
在 bash 中,您可以使用以下方法得到一些接近的结果:
7z l ~/Downloads/
Alt+n
其中bind
已映射Alt+n到重写变量的函数READLINE_LINE
。
为了近似制表符完成,我使用 argument-parsing-perl-kludge 来完成此操作并fzf
显示菜单。
https://github.com/WillForan/fuzzy_arg/blob/master/fuzzy_new_complete.bash