如何递归列出所有带有时间戳和完整路径的文件?

如何递归列出所有带有时间戳和完整路径的文件?

我想递归列出给定目录中的所有文件,以及它们的完整路径和时间戳。如下所示:

10:30 Dec 10 2010 /tmp/mydir/myfile

我尝试过:

find . -type f -exec ls -la {} \;

但这并没有给我完整的路径。

答案1

如果你的 find 不支持 printf,还有另一种方法

find . -type f | xargs ls -al  | awk -v pwd="$PWD" '{ print $(NF-2), $(NF-1) , pwd substr($(NF), 2)}'  

笔记:这仅在文件名中没有空格时才有效。输出如下所示:

2010-09-29 22:08 /home/nifle/ac.txt
2010-10-04 16:02 /home/nifle/array.sh
2010-10-05 23:32 /home/nifle/b.txt
2010-12-15 16:49 /home/nifle/barcopy/subbar/ghut
2010-12-15 16:48 /home/nifle/bardir/subbar/ghut
2010-09-29 22:16 /home/nifle/foo.gz
2010-09-29 22:16 /home/nifle/foo1.gz

答案2

解决方案 1(ls)

在每个文件上运行ls并过滤结果:

find "$PWD" -type f -exec ls -la {} \; | cut -d ' ' -f 6-

输出:

Jun 14 00:02 /tmp/superuser.com/questions/370070/bar
Jun 14 20:24 /tmp/superuser.com/questions/228529/file  with    multiple   spaces
Jan  2  1972 /tmp/superuser.com/questions/228529/old_file

解决方案 2(-printf)

使用-printf

find "$PWD" -type f -printf "%t %p\n"

输出:

Thu Jun 14 00:02:47.0173429319 2012 /tmp/superuser.com/questions/370070/bar
Thu Jun 14 20:24:16.0947808489 2012 /tmp/superuser.com/questions/228529/file  with    multiple   spaces
Sun Jan  2 03:04:05.0000000000 1972 /tmp/superuser.com/questions/228529/old_file

解决方案 3(统计)

运行 GNUstat在每个文件上:

find "$PWD" -type f -exec stat --format '%y %n' {} \;

输出:

2016-03-30 04:32:10.034718786 +0300 /etc/passwd
2015-12-21 19:30:07.854470768 +0200 /etc/group

提示:如果您有 GNU find,\;可以将其替换为\+

答案3

问题StackOverflow 上的 针对您问题的一部分进行了讨论。为了得到您想要的,您可以尝试以下操作:

find $ABSOLUTE_PATH_TO_DIR -ls

答案4

tree是一个不错的选择:

tree -fD --timefmt %c

使用以下方式格式化时间时间字符串句法。

相关内容