如何对日记进行排序?

如何对日记进行排序?

日记的条目有月份和日期,没有年份,其格式%D_%M.tex但索引顺序错误,因为排序错误和文件名格式不佳。我应该如何调用我的日记条目才能通过排序命令对它们进行排序(从旧到新或相反)?关键是基数排序,请注意这个讨论这里,但其中哪一个仍然处于开放状态。通过哪种 Radix 排序算法以及何时进行?优缺点都有什么?

如果您知道排序,请在此停止 - 以下部分适用于那些想要通过小型工作示例和预期输出重现日记的人

输出错误

 $ ls Days/ |sort -M 
 12_4.tex 
 29_3.tex 
 3_4.tex

预期输出

 29_3.tex 
 3_4.tex 
 12_4.tex 

小例子(排序错误 -order nb the radix -bug)

$ ls Days/
12_4.tex  29_3.tex  3_4.tex
$ cat Makefile 
.PHONY: all
all:   days.tex  

days.tex: $(wildcard Days/*.tex)
  ls Days/*.tex | awk '{printf "\\input{%s}\n", $$1}' > days.tex
$ make; pdflatex diary.tex
$ cat diary.tex
\documentclass{article}         
\begin{document}     
\input{days}
\end{document}

有关的

  1. 维基百科中的基数排序这里

答案1

另一种方法是重命名文件:

for FILE in Days/*
do
      DAY=`cut --delimiter '_' --fields 1 ${FILE}`
      MONTH=`cut --delimiter '_' --fields 2 ${FILE} | cut --delimiter '.' --fields 1
      NEWFILE=${MONTH}_${DAY}.tex
      cp ${FILE} ${NEWFILE}
done

或者你可以使用该touch命令,这样就ls -1t可以了。

相关内容