linux - 如何在 unix 中格式化带有目录名的文件列表?

标签 linux unix find format report

我有一个查找命令,我在脚本中使用它来列出给定一周的归档文件,从每个星期六开始。该脚本效果很好,但如果可能的话,我希望有一些格式。

列出的文件是归档文件,但我的列表中不需要目录名称“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/

相关文章:

linux - 为什么 docker 有能力运行不同的 linux 发行版?

linux - sed 解码 html 编码。需要解释如何

linux - shell中 `find . -name`和 `find -name`的区别?

javascript - 有没有办法在javascript中检测页面搜索中的查找

javascript - 在 JavaScript 数组上使用 find 时如何检查未定义

linux - 为有异常(exception)情况的行中的单词添加前缀

bash - 通过变量向 'find -exec' 传递命令不起作用

unix - 替换文本文件中不以特定字符开头的行上的特定列

bash - 用文件中的多行替换一行

ruby-on-rails - 将 example.com 重定向到在本地主机 :3000 leaving apache sites intact? 上运行的 Rails 服务器