1

我有这个命令来转储所有的 java 和 xml 文件:

find . -name '*.*' -print -ls

我得到以下输出:

./auth-jaas/pom.xml
562949954141667    2 ----------   1 John ????????     1282 Feb 14  2011 ./auth-jaas/pom.xml

有没有办法像这样得到更小的东西:

1282 Feb 14  2011 ./auth-jaas/pom.xml

我只对文件大小和时间戳感兴趣。

4

4 回答 4

4

我认为您所追求的是:

find . -name '*.*' -exec stat -f "%10z %Sm %N" {} +

我在我的一个目录中将其作为输出的一部分:

   534 Mar  2 20:17:16 2013 ./so.6964747
   835 Mar  2 20:17:16 2013 ./so.6965001
 25048 Jun 25 21:29:46 2012 ./so.8854855.sql
  7710 Feb 13 07:17:01 2013 ./sortAtt.c
  1565 Sep  4 19:15:30 2010 ./strandsort.c
  7224 Sep 22 13:42:17 2012 ./streplace.c
  3033 Jan 28 23:16:46 2013 ./substr.c
   139 Mar 20 12:48:24 2013 ./sum.sh
  6833 Sep 21 07:57:53 2012 ./timezeromoves.c
   614 Feb 21 09:23:00 2013 ./travAsm.c
   347 Feb 21 09:23:00 2013 ./traverse.c
  1277 Jul 26 09:30:12 2012 ./uint128.c
   793 Aug 19 00:47:48 2012 ./unwrap.c
  1906 Jul 28 08:41:22 2012 ./xxx.sql
  1904 Sep 22 21:30:09 2011 ./yyy.sql

阅读选项可能会告诉您如何从“修改时间的字符串格式”(%Sm)中删除时间。

只是为了记录,这是/usr/bin/stat在 Mac OS X 10.7.5 上使用的,而不是 GNU stat。您将需要仔细检查那里可用的内容。

find . -name '*.*' -exec /usr/gnu/bin/stat --format "%s   %y   %N"

输出的相同部分是:

534   2013-03-02 20:17:16.000000000 -0800   ./so.6964747
835   2013-03-02 20:17:16.000000000 -0800   ./so.6965001
25048   2012-06-25 21:29:46.000000000 -0700   ./so.8854855.sql
7710   2013-02-13 07:17:01.000000000 -0800   ./sortAtt.c
1565   2010-09-04 19:15:30.000000000 -0700   ./strandsort.c
7224   2012-09-22 13:42:17.000000000 -0700   ./streplace.c
3033   2013-01-28 23:16:46.000000000 -0800   ./substr.c
139   2013-03-20 12:48:24.000000000 -0700   ./sum.sh
6833   2012-09-21 07:57:53.000000000 -0700   ./timezeromoves.c
614   2013-02-21 09:23:00.000000000 -0800   ./travAsm.c
347   2013-02-21 09:23:00.000000000 -0800   ./traverse.c
1277   2012-07-26 09:30:12.000000000 -0700   ./uint128.c
793   2012-08-19 00:47:48.000000000 -0700   ./unwrap.c
1906   2012-07-28 08:41:22.000000000 -0700   ./xxx.sql
1904   2011-09-22 21:30:09.000000000 -0700   ./yyy.sql
于 2013-03-20T21:15:38.307 回答
3

如果您的命令中有 Linux 风格-printf,请find使用%a访问时间、%t修改时间(以及用于更具体格式的大写变体)和%s文件大小(以字节为单位)。

-ls或者,将输出从through管道化cut

于 2013-03-20T21:12:41.987 回答
2

改用du

$ du --time file
4   2013-03-20 19:49    file

find

$ find . -name 'file' -exec du --time {} +
于 2013-03-20T21:13:04.807 回答
0

通常我会说剪切,但不知道它们是制表符还是空格分隔符:

find . -name '*.*' -print -ls |awk '{$0=substr($0,index($0,FS)+4);printf $0}'
于 2013-03-20T21:22:18.293 回答