没有路径保存文件名,与grep和awk组合?

时间:2015-02-17 14:01:28

标签: linux shell awk find filemtime

find /user/stc/tmp -mmin -200 -ls | grep '.txt' | awk '{print $8, $9, $10, $11}' >> tempresult.txt

首先我是新手, 我试图找出上周修改的.txt文件(在home / user / temp中)并将结果保存到文件中。 所以有些我怎么想出来,但我需要帮助,只保存没有路径的文件名。  我可以用

打印出来
awk '{print \$NF}'

但是当我尝试与上述命令结合使用时它没有按预期工作。

任何帮助/建议/改进都非常感谢。 提前谢谢。

2 个答案:

答案 0 :(得分:4)

该任务的管道非常复杂。

find支持您在没有grep / awk管道的情况下执行所需的所有过滤和格式化支持。 (更不用说管道grepawk几乎从不需要。)

尝试:

find /usr/stc/tmp -mmin -200 -a -name '*.txt' -printf '%P\n'
  • -a合并find说明符(虽然这也是默认操作)
  • -name '*.txt'仅选择与所需名称格式匹配的文件
  • -printf选择输出格式
  • '%P\n'使用命令行参数输出找到的文件的名称,在该参数下删除它(后跟换行符)。

如果您实际只是指文件 name (根本没有路径组件),那么您需要%f格式字符串而不是%P(感谢Xorg )。

答案 1 :(得分:1)

find /user/stc/tmp -mmin -200 -printf "%f\n" > log_file

  find /user/stc/tmp -mtime -7 -printf "%f\n" > log_file

...

过去7天内

-mtime -7

%f将忽略该文件所在的任何子目录。

编辑用户请求

 find /user/stc/tmp -mtime -7 -printf "%Td-%Tm-%TY %Tr %TY %f\n" > log_file


%Td-%Tm-%TY        #modification time: day-month-year
%Tr                #modification date time
%TY                #modification date year

请注意,linux会跟踪修改日期而不是创建日期......