如何在 unix 中格式化具有目录名称的文件列表?

2022-10-06 23:23:42

我在脚本中使用了一个 find 命令来列出给定一周的存档文件,从每个星期六开始。该脚本效果很好,但如果可能的话,我想要一些格式。

列出的文件是存档文件,但我的列表中不需要目录名称“archive”(如脚本输出下所示)。

对于我在 find 命令中使用的变量,我使用了函数:date +"%b %d" -d "last sataturday"。正如它所说,这让我得到了最后一个星期六。

任何帮助或提示都会很棒。

--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

- Will Jordan

Source
es
回答


1
  • 我不认为你所追求的不能只用一个命令来完成

    我没有时间尝试重新创建与您匹配的目录结构并用文件填充它,但认为这种方法应该适合您...

    find . -newermt "$DAYOFWEEK" -type f  -printf "%TY-%Tm-%Td %TI:%TM %h %f\n"| sort -t' ' -k3,3 -k1,2  |  awk 'BEGIN{old=""} {if ( != old){print "";print ;print " "}else{print " "};old=}'