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

use*_*777 3 linux ls

我想递归地列出给定目录中的所有文件,及其完整路径和时间戳。像这样的东西:

10:30 Dec 10 2010 /tmp/mydir/myfile
Run Code Online (Sandbox Code Playgroud)

我试过:

find . -type f -exec ls -la {} \;
Run Code Online (Sandbox Code Playgroud)

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

Cri*_*itu 7

解决方案 1 (ls)

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

find "$PWD" -type f -exec ls -la {} \; | cut -d ' ' -f 6-
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

解决方案 2 (-printf)

使用-printf

find "$PWD" -type f -printf "%t %p\n"
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

解决方案 3(统计)

stat在每个文件上运行 GNU :

find "$PWD" -type f -exec stat --format '%y %n' {} \;
Run Code Online (Sandbox Code Playgroud)

输出:

2016-03-30 04:32:10.034718786 +0300 /etc/passwd
2015-12-21 19:30:07.854470768 +0200 /etc/group
Run Code Online (Sandbox Code Playgroud)

提示:如果你有 GNU find,\;可以替换为\+.