如何在Linux终端中按时间顺序对列表进行排序?

如何在Linux终端中按时间顺序对列表进行排序?,linux,bash,list,shell,terminal,Linux,Bash,List,Shell,Terminal,我在linux终端(Fedora-20)中有以下命令 sort-nr在我的情况下不起作用,很遗憾 如何按时间顺序对列表进行排序?如果您想按日期和时间进行排序,这似乎是可行的 sort -s -k7 -k9 尝试在ls-t | xargs前加前缀,并从stat中删除**,以及最后一个排序 ls -t | xargs stat -c "The file "%n" was modified on "%y | awk 'BEGIN{OFS=" "}{for(i=1;i<=7;++i)printf

我在linux终端(Fedora-20)中有以下命令

sort-nr在我的情况下不起作用,很遗憾


如何按时间顺序对列表进行排序?

如果您想按日期和时间进行排序,这似乎是可行的

sort -s -k7 -k9

尝试在
ls-t | xargs
前加前缀,并从
stat
中删除
**
,以及最后一个
排序

ls -t | xargs stat -c "The file "%n" was modified on "%y | awk 'BEGIN{OFS=" "}{for(i=1;i<=7;++i)printf("%s ",$i)}{print "at " substr($8,0,5)}'

ls-t | xargs stat-c”文件“%n”在“%y | awk”BEGIN{OFS=”“}{for(i=1;i这似乎是的后续操作。也许你应该指定你的真正目标。不管怎样

我为您提供了几种显示文件修改日期的方法。以下是根据修改时间对文件进行排序的方法:

带有
日期
(和Bash)
使用
查找

笔记
这些从最早到最新排序。如果需要其他顺序,请将
-r
选项添加到
排序

这些文件在文件名中使用的空间很好,但是在文件名中有新行中断。我不认为你甚至想在这里考虑这样的文件名。为了真正的安全,你可以像这样忽略它们:

  • 对于
    日期
    版本:在顶部某处添加
    shopt-s extglob
    ,并将
    For
    行替换为

    for file in !(*$'\n'*); do
    
  • 对于
    查找
    版本:在命令中添加
    \!-name$'*\n*'
    ,如下所示:

    find . -mindepth 1 -maxdepth 1 -name '*' \! -name $'*\n*' -printf '%T@\tThe file %f was modified on %TY-%Tm-%Td at %TH:%TM\n' | sort -n | cut -f2-
    
  • find
    版本还将显示隐藏的文件。如果不需要,请执行以下操作:

    find . -maxdepth 1 -name '*' \! -name $'*\n*' \! -name '.*' -printf '%T@\tThe file %f was modified on %TY-%Tm-%Td at %TH:%TM\n' | sort -n | cut -f2-
    
find . -mindepth 1 -maxdepth 1 -name '*' -printf '%T@\tThe file %f was modified on %TY-%Tm-%Td at %TH:%TM\n' | sort -n | cut -f2-
for file in !(*$'\n'*); do
find . -mindepth 1 -maxdepth 1 -name '*' \! -name $'*\n*' -printf '%T@\tThe file %f was modified on %TY-%Tm-%Td at %TH:%TM\n' | sort -n | cut -f2-
find . -maxdepth 1 -name '*' \! -name $'*\n*' \! -name '.*' -printf '%T@\tThe file %f was modified on %TY-%Tm-%Td at %TH:%TM\n' | sort -n | cut -f2-