7

I retrieve a booklist after seaching the python books in home directory using this command on OSX:

    find ~ -type f -iregex '.*python.*\.pdf'

the booklist

    ...
    .../Computing/Python/Beginning_Python.pdf
    .../Python/Core.Python.Applications.Programming.3rd.Edition.pdf
    .../Python/Packt.Mastering.Python.2016.4.pdf
    ...

I intend to check their status with command xargs and stat

    $ find ~ -type f -iregex '.*python.*\.pdf' | xargs stat -x
    # get error
    xargs: unterminated quote

Tried alternatively with option -0

    find ~ -type f -iregex '.*python.*\.pdf' | xargs -0 stat -x 
    # get error
    : stat: File name too long

How to resolve such a problem?

2
  • this is on OSX, I assume? (stat -x)
    – Jeff Schaller
    Mar 27, 2018 at 12:59
  • 1
    Note that -iregex '.*python.*\.pdf' will match on /path/to/python/whatever/foo.pdf. If you want to match on files whose name (as opposed to full path) contains python and ends in .pdf, use -iname '*python*.pdf' or -iregexp '.*python[^/]*\.pdf' Mar 27, 2018 at 13:33

1 Answer 1

6

-0 to xargs doesn't make much sense if you don't also change the input to be 0-separated. Try find ~ -type f -iregex '.*python.*\.pdf' -print0 | xargs -0 stat -x

1
  • 1
    Some xargs implementations also have a -r option to not run the command if the input is empty (on FreeBSD, it's implicit). Mar 27, 2018 at 13:35

Not the answer you're looking for? Browse other questions tagged or ask your own question.