日记的条目有月份和日期,没有年份,其格式%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
另一种方法是重命名文件:
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
可以了。