如何在Linux终端中按时间顺序对列表进行排序?
我在linux终端(Fedora-20)中有以下命令 sort-nr在我的情况下不起作用,很遗憾如何在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
如何按时间顺序对列表进行排序?如果您想按日期和时间进行排序,这似乎是可行的
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-