gpt4 book ai didi

linux - 如何按上次更新日期列出父目录,包括该文件夹的所有文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:05 26 4
gpt4 key购买 nike

我希望它递归地查看当前目录 (/data/trac) 中的所有内容,然后仅列出父项(test、test2、project1)以及每个目录中最新更新文件的时间戳到它,并按该时间戳对其进行排序。

场景如下:

$ pwd
$ /data/trac
$ ls -lht
drwxrwxr-x 9 www-data www-data 4.0K Apr 30 2012 test
drwxrwxr-x 9 www-data www-data 4.0K Apr 30 2013 test2
drwxrwxr-x 9 www-data www-data 4.0K Apr 30 2013 project1
$ cd test
$ ls -lht
drwxrwxr-x 2 www-data www-data 4.0K Feb 4 16:12 db
drwxrwxr-x 2 www-data www-data 4.0K Dec 13 13:16 conf
drwxrwxr-x 4 www-data www-data 4.0K Jan 11 2013 attachments
drwxrwxr-x 2 www-data www-data 4.0K Apr 30 2012 templates

我们有一个名为“test”的目录,最后更新于 2012 年 4 月 30 日。例如,在这种情况下,该目录中有一个 db 文件夹,其中包含一个于 2014 年 2 月 4 日更新的文件。我想使用此日期作为主要父文件夹“test”的时间戳。

我想做的是仅显示父文件夹(testtest2project1)并按最后更新日期对它们进行排序(递归)并显示最后更新日期。

所以输出应该是:

$ awesome-list-command
Feb 4 2014 test
Feb 2 2014 test2

我已经在互联网上搜索了几个小时,试图找到这个,甚至我自己也无济于事。我试过:

find . -exec stat -f "%m" \{} \; | sort -n -r | head -1

find $1 -type f | xargs stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head

find /some/dir -printf "%T+\n" | sort -nr | head -n 1

find /some/dir -printf "%TY-%Tm-%Td %TT\n" | sort -nr | head -n 1

stat --printf="%y %n\n" $(ls -tr $(find * -type f))

这些都没有用。

最佳答案

我的测试用例是一棵像这样的:

$ tree -t .
.
├── test2
│   └── db
│   ├── foo
│   └── bar
└── test
└── db
├── foo
└── bar

foo 是每个目录中最新的文件。

#/bin/bash
# awesome-list-command

for dir in */; do
timestamp=$(find ./$dir -type f -printf "%T@ %t\\n" | sort -nr -k 1,2 | head -n 1)
printf "%s %s\n" "$timestamp" "$dir"
done | sort -nr -k 1,2 | awk '{$1=""; print}'

输出:

$ ./awesome-list-command
Tue Feb 4 23:29:41.0766864265 2014 test2/
Tue Feb 4 23:29:40.0026788568 2014 test/

比较:

$ stat -c "%y" test*/db/foo
2014-02-04 23:29:41.766864265 +0100
2014-02-04 23:29:40.026788568 +0100

关于linux - 如何按上次更新日期列出父目录,包括该文件夹的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21564527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com