6

I can easily find files with given string in name:

me@comp:/usr/local/hydra/hydra-7.4.2$ find -D stat -name "*hack*"
./hack881663129.txt
./hack881663129_7.txt
./hack881663129_5.txt
./hack881663129_4.txt
./hack881663129_4_7.txt
./hack881663129_6.txt
./hack881663129_1_6.txt
./hack881663129_8.txt

How can I also print file details, like size, date of creation etc.?

muru
  • 197,895
  • 55
  • 485
  • 740
4pie0
  • 481
  • 8
  • 21

3 Answers3

9

Just use -printf parameter with proper arguments:

$ find -name "*hack*" -printf '%m %p %a\n'
644 ./hack881663129.txt Sat Feb 16 02:27:16.0189270840 2013
644 ./hack881663129_7.txt Sat Feb 16 05:30:12.0673185691 2013
644 ./hack881663129_5.txt Sat Feb 16 05:24:57.0441188136 2013
644 ./hack881663129_4.txt Sat Feb 16 05:22:21.0209189346 2013
664 ./hack881663129_4_7.txt Wed Feb 20 11:09:49.0786644191 2013
644 ./hack881663129_6.txt Sat Feb 16 05:26:49.0297187267 2013
664 ./hack881663129_1_6.txt Mon Feb 18 11:40:05.0991189262 2013
644 ./hack881663129_8.txt Sat Feb 16 05:31:37.0689185031 2013

See man find and search for -printf for other placeholders.

David Foerster
  • 36,264
  • 56
  • 94
  • 147
4pie0
  • 481
  • 8
  • 21
0

From this Q&A: How to make locate output look like `ll` or `ls -la` but nicer? consider using the locate command which is much faster than find. I have a little script that calls it and sets up a heading and stat info to provides the formatting I believe you seek:

$ time llocate zhack
ACCESS      OWNER  GROUP  SIZE  MODIFIED    NAME (updatdb last ran: 2018-05-22 20:45:05)
drwxr-xr-x  root   root   4096  2018-05-17  /usr/src/linux-headers-4.4.0-124/zfs/cmd/zhack
-rw-r--r--  root   root   6     2018-05-02  /usr/src/linux-headers-4.4.0-124/zfs/cmd/zhack/Makefile.in
drwxr-xr-x  root   root   4096  2018-05-22  /usr/src/linux-headers-4.4.0-127/zfs/cmd/zhack
-rw-r--r--  root   root   6     2018-05-19  /usr/src/linux-headers-4.4.0-127/zfs/cmd/zhack/Makefile.in

real    0m0.661s
user    0m0.665s
sys     0m0.003s

See the link to get the llocate script.

0

Execute stat for every file found:

find . -name '*hack*' -exec stat {} \;

The same, using xargs:

find . -name '*hack*' | xargs stat

Better, when there are delimiter characters in the filenames:

find . -name '*hack*' -print0 | xargs -0 stat
zwets
  • 12,354