find /user/stc/tmp -mmin -200 -ls | grep '.txt' | awk '{print $8, $9, $10, $11}' >> tempresult.txt
首先我是新手, 我试图找出上周修改的.txt文件(在home / user / temp中)并将结果保存到文件中。 所以有些我怎么想出来,但我需要帮助,只保存没有路径的文件名。 我可以用
打印出来awk '{print \$NF}'
但是当我尝试与上述命令结合使用时它没有按预期工作。
任何帮助/建议/改进都非常感谢。 提前谢谢。
答案 0 :(得分:4)
该任务的管道非常复杂。
find
支持您在没有grep
/ awk
管道的情况下执行所需的所有过滤和格式化支持。 (更不用说管道grep
到awk
几乎从不需要。)
尝试:
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会跟踪修改日期而不是创建日期......