我有一个查找命令,我在脚本中使用它来列出给定一周的归档文件,从每个星期六开始。该脚本效果很好,但如果可能的话,我希望有一些格式。
列出的文件是归档文件,但我的列表中不需要目录名称“archive”(如脚本输出下所示)。
对于我在 find 命令中使用的变量,我使用了函数:date +"%b %d"-d "last saturday"。正如它所说,这让我在最后一个星期六。
任何帮助或提示都会很棒。
--USES DAYOFWEEK variable TO GET THE LAST SATURDAY; THEN GETS
--FILES WITH A MODIFED DATE FOR THAT SATURDAY OR NEWER
find . -newermt "$DAYOFWEEK" -printf "%TY-%Tm-%Td %TI:%TM %f\n"
脚本输出
2016-02-01 10:10 dir_name1
2016-02-01 10:10 archive
2016-02-01 07:58 file1.txt
2016-02-01 07:58 file2.txt
2016-02-02 07:58 file3.txt
2016-02-02 07:58 file4.txt
2016-02-01 10:10 dir_name2
2016-02-01 10:10 archive
2016-02-01 07:58 file12.txt
2016-02-01 07:58 file22.txt
2016-02-02 07:58 file32.txt
2016-02-02 07:58 file42.txt
我希望它的格式如下(按客户名称的字母顺序,然后是最旧的文件到最新的文件):
dir_name1
2016-02-01 07:58 file1.txt
2016-02-01 07:58 file2.txt
2016-02-02 07:58 file3.txt
2016-02-02 07:58 file4.txt
dir_name2
2016-02-01 07:58 file12.txt
2016-02-01 07:58 file22.txt
2016-02-02 07:58 file32.txt
2016-02-02 07:58 file42.txt
最佳答案
你想要的东西不能只用一条命令完成,我不认为
我没有时间尝试重新创建一个与您的相匹配的目录结构并用文件填充它,但我认为这种方法应该适合您...
find . -newermt "$DAYOFWEEK" -type f -printf "%TY-%Tm-%Td %TI:%TM %h %f\n"| sort -t' ' -k3,3 -k1,2 | awk 'BEGIN{old=""} {if ($3 != old){print "";print $3;print $1" "$4}else{print $1" "$4};old=$3}'
关于linux - 如何在 unix 中格式化带有目录名的文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158565/