find(1) sample -type f -printf '%f,%h\n'
search for files in a directory hierarchy
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
-type c
       File is of type c:

       b      block (buffered) special

       c      character (unbuffered) special

       d      directory

       p      named pipe (FIFO)

       f      regular file

       l      symbolic link; this is never true if the -L option or the  -follow  option  is  in  effect,
              unless the symbolic link is broken.  If you want to search for symbolic links when -L is in
              effect, use -xtype.

       s      socket

       D      door (Solaris)
-printf format
       True; print format on the standard output, interpreting `\' escapes  and  `%'  directives.   Field
       widths  and precisions can be specified as with the `printf' C function.  Please note that many of
       the fields are printed as %s rather than %d, and this may mean that flags don't work as you  might
       expect.   This  also  means  that  the  `-'  flag does work (it forces fields to be left-aligned).
       Unlike -print, -printf does not add a  newline  at  the  end  of  the  string.   The  escapes  and
       directives are:

       \a     Alarm bell.

       \b     Backspace.

       \c     Stop printing from this format immediately and flush the output.

       \f     Form feed.

       \n     Newline.

       \r     Carriage return.

       \t     Horizontal tab.

       \v     Vertical tab.

       \0     ASCII NUL.

       \\     A literal backslash (`\').

       \NNN   The character whose ASCII code is NNN (octal).

       A  `\' character followed by any other character is treated as an ordinary character, so they both
       are printed.

       %%     A literal percent sign.

       %a     File's last access time in the format returned by the C `ctime' function.

       %Ak    File's last access time in the format specified by k, which is either `@'  or  a  directive
              for  the  C  `strftime' function.  The possible values for k are listed below; some of them
              might not be available on all systems, due to differences in `strftime' between systems.

              @      seconds since Jan. 1, 1970, 00:00 GMT, with fractional part.

              Time fields:

              H      hour (00..23)

              I      hour (01..12)

              k      hour ( 0..23)

              l      hour ( 1..12)

              M      minute (00..59)

              p      locale's AM or PM

              r      time, 12-hour (hh:mm:ss [AP]M)

              S      Second (00.00 .. 61.00).  There is a fractional part.

              T      time, 24-hour (hh:mm:ss)

              +      Date and time, separated by `+', for example `2004-04-28+22:22:05.0'.  This is a GNU
                     extension.   The  time  is  given  in the current timezone (which may be affected by
                     setting the TZ environment variable).  The seconds field includes a fractional part.

              X      locale's time representation (H:M:S)

              Z      time zone (e.g., EDT), or nothing if no time zone is determinable

              Date fields:

              a      locale's abbreviated weekday name (Sun..Sat)

              A      locale's full weekday name, variable length (Sunday..Saturday)

              b      locale's abbreviated month name (Jan..Dec)

              B      locale's full month name, variable length (January..December)

              c      locale's date and time (Sat Nov 04 12:02:33 EST 1989).  The format is  the  same  as
                     for  ctime(3)  and  so  to  preserve  compatibility  with  that  format, there is no
                     fractional part in the seconds field.

              d      day of month (01..31)

              D      date (mm/dd/yy)

              h      same as b

              j      day of year (001..366)

              m      month (01..12)

              U      week number of year with Sunday as first day of week (00..53)

              w      day of week (0..6)

              W      week number of year with Monday as first day of week (00..53)

              x      locale's date representation (mm/dd/yy)

              y      last two digits of year (00..99)

              Y      year (1970...)

       %b     The amount of disk space used for this  file  in  512-byte  blocks.  Since  disk  space  is
              allocated  in  multiples  of the filesystem block size this is usually greater than %s/512,
              but it can also be smaller if the file is a sparse file.

       %c     File's last status change time in the format returned by the C `ctime' function.

       %Ck    File's last status change time in the format specified by k, which is the same as for %A.

       %d     File's depth in the directory tree; 0 means the file is a command line argument.

       %D     The device number on which the file exists (the st_dev field of struct stat), in decimal.

       %f     File's name with any leading directories removed (only the last element).

       %F     Type of the filesystem the file is on; this value can be used for -fstype.

       %g     File's group name, or numeric group ID if the group has no name.

       %G     File's numeric group ID.

       %h     Leading directories of file's name (all but the last element).  If the file  name  contains
              no slashes (since it is in the current directory) the %h specifier expands to ".".

       %H     Command line argument under which file was found.

       %i     File's inode number (in decimal).

       %k     The  amount of disk space used for this file in 1K blocks. Since disk space is allocated in
              multiples of the filesystem block size this is usually greater than  %s/1024,  but  it  can
              also be smaller if the file is a sparse file.

       %l     Object of symbolic link (empty string if file is not a symbolic link).

       %m     File's  permission  bits (in octal).  This option uses the `traditional' numbers which most
              Unix implementations use, but if your particular implementation uses an unusual ordering of
              octal  permissions  bits,  you will see a difference between the actual value of the file's
              mode and the output of %m.   Normally you will want to have a leading zero on this  number,
              and to do this, you should use the # flag (as in, for example, `%#m').

       %M     File's permissions (in symbolic form, as for ls).  This directive is supported in findutils
              4.2.5 and later.

       %n     Number of hard links to file.

       %p     File's name.

       %P     File's name with the name of the command line argument under which it was found removed.

       %s     File's size in bytes.

       %S     File's sparseness.  This is calculated as (BLOCKSIZE*st_blocks / st_size).  The exact value
              you  will  get  for  an  ordinary  file  of a certain length is system-dependent.  However,
              normally sparse files will have values less than 1.0, and files which use  indirect  blocks
              may  have  a  value  which  is  greater than 1.0.   The value used for BLOCKSIZE is system-
              dependent, but is usually 512 bytes.   If the file size  is  zero,  the  value  printed  is
              undefined.   On systems which lack support for st_blocks, a file's sparseness is assumed to
              be 1.0.

       %t     File's last modification time in the format returned by the C `ctime' function.

       %Tk    File's last modification time in the format specified by k, which is the same as for %A.

       %u     File's user name, or numeric user ID if the user has no name.

       %U     File's numeric user ID.

       %y     File's type (like in ls -l), U=unknown type (shouldn't happen)

       %Y     File's type (like %y), plus follow symlinks: L=loop, N=nonexistent

       A `%' character followed by any other character is discarded, but the other character  is  printed
       (don't  rely  on  this,  as further format characters may be introduced).  A `%' at the end of the
       format argument causes undefined behaviour  since  there  is  no  following  character.   In  some
       locales,  it  may hide your door keys, while in others it may remove the final page from the novel
       you are reading.

       The %m and %d directives support the # , 0 and + flags, but the other directives do not,  even  if
       they  print numbers.  Numeric directives that do not support these flags include G, U, b, D, k and
       n.  The `-' format flag is supported and changes the alignment of  a  field  from  right-justified
       (which is the default) to left-justified.

       See  the  UNUSUAL  FILENAMES section for information about how unusual characters in filenames are
       handled.
source manpages: find