如何在选项卡完成列表中按日期排序文件


9
$ 7z l〜/下载/Tab

如何使结果列表按日期而不是按名称排序?

我目前使用特殊脚本在给定目录中列出N个最新文件(并将文件名手动复制到命令行),但希望使其无缝且更加方便。



您是否只想按日期列出文件,还是要按日期顺序将它们添加到归档中?
terdon

“下载”目录中有许多文件,我想访问最近下载的文件(也许将其解压缩,也许移到其他地方,等等)。
六。

Answers:


2

我认为bash无法做到这一点,因此您可以尝试一下zsh。我不是zsh用户,但我认为此配置应该有效:

autoload -U compinit
compinit
zstyle ':completion:*' file-sort modification reverse

reverse此处显示列表末尾的最新文件,因为上部可能无法在屏幕上看到。)


0

有时我需要在我的下载目录中找到最新下载的文件,但可能不知道确切的文件名。这是我的方法。

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键完成方法,但它可能适合您的需求。


不保存输入。实际上,我确实有一个rlls -lhtc "$@" | head -n $N此相关的脚本。
六。

问题是如何将该脚本或其他脚本嵌入到<kbd> Tab </ kbd>中,以实现无缝思考。
六。

您的代码段也倾向于使用一些棘手的文件名,例如下载文件的典型文件名。
六。

0

我将按照以下步骤进行操作

  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(最近的列表)。但是我需要明确地调用它,然后复制并粘贴。我希望它与制表符完成功能更加集成。
六。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.