查找并列出文件的修改日期和时间

查找并列出文件的修改日期和时间

我在服务器上有多个名称以 tomcat_ 开头的目录,在这个目录下有一个文件,例如managetest.class

现在我只需要获取以下格式的特定文件的修改日期和时间

文件夹名称修改日期

答案1

cd到目录所在的目录tomcat_*(它们不需要全部在同一目录中),然后执行以下命令:

find . -path "./*tomcat_*managetest.class"

这将匹配,例如:

./b/tomcat_c/managetest.class
./tomcat_a/managetest.class
./tomcat_a/b/managetest.class

但不是./b/c/managetest.class。让我知道是否managetext.class必须立即进去tomcat_*

现在,打印修改日期的完整命令:

find . -path "./*tomcat_*managetest.class" -exec stat -c "%n %y" {} \;

您可以使用 awk 选择您更感兴趣的字段(例如年份或时间),在上面的命令末尾写入类似, 或者像 gogoud 建议的那样,您可以使用's命令| awk '{print $1" "$2" "$3}',而不是使用 exec 。findprintf

答案2

正如 Ulrich 所建议的,你可以这样做find

find "/mydir" -type f -regex ".*/tomcat_.*/managetest.class" -printf "%h %T+\n"

更新:

为了获得您需要的格式,我们可以通过 awk 管道输出:

find "/mydir" -type f -path "*/tomcat_*/managetest.class" -printf "%h %T+\n" | awk -F"[ /.]" '{print $(NF-4),$(NF-1)}'

awk 语句将输出拆分为“[space]/”中任意字符处的字段。 - 然后它打印出第四个和倒数第一个字段,这些字段应该是您需要的字段,这样您就不会再看到更高级别的目录、文件名或瞬间。 (我也改用finds-path而不是-regex,但它们都实现了相同的目标。)

相关内容