我有这个命令来转储所有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
我只对文件大小和时间戳感兴趣。
答案 0 :(得分: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
答案 1 :(得分:3)
如果-printf
命令中有find
版Linux,请使用%a
表示访问时间,%t
表示修改时间(以及更具体的大写变体)格式化)和%s
的文件大小(以字节为单位)。
或者,将输出从-ls
传递到cut
。
答案 2 :(得分:2)
改为使用du
:
$ du --time file
4 2013-03-20 19:49 file
使用find
:
$ find . -name 'file' -exec du --time {} +
答案 3 :(得分:0)
通常我会说剪切,但不知道它们是制表符还是空格分隔符:
find . -name '*.*' -print -ls |awk '{$0=substr($0,index($0,FS)+4);printf $0}'