2013-03-20 62 views
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 

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

+2

你有'stat'命令可用? – 2013-03-20 21:08:37

+0

我拥有它,从未使用过 – 2013-03-20 21:12:31

回答

2

使用du代替:

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

随着find

$ find . -name 'file' -exec du --time {} + 
+0

我可以以字节为单位转储文件大小吗?漂亮整齐的东西 – 2013-03-20 21:14:47

+0

@ code-gijoe它默认以字节显示。阅读“man du”以查看不同的选项。 – 2013-03-20 21:24:54

+0

问题是它删除了文件扩展名,所以我不能通过文件扩展名grep结果 – 2013-03-20 21:29:34

3

如果你在你的find命令在Linux风格-printf,使用%a访问时间,%t对mod-时间(和更特定的格式大写字母变体)和%s以字节为单位的文件大小。

或者,管道从-lscut的输出。

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)中删除时间。

只是为了记录,这是在Mac OS X 10.7.5上使用/usr/bin/stat,而不是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 
+0

我明白了,谢谢 – 2013-03-20 21:22:38

0

通常情况下,我会说砍,但不知道如果他们是标签或空格分隔:

find . -name '*.*' -print -ls |awk '{$0=substr($0,index($0,FS)+4);printf $0}'