I want to get the number of lines in my application. I am using this code:

find . "(" -name "*.m" -or -name "*.h" ")" -print | xargs wc -l 

It is working fine in other applications but for one of my applications it is giving the error "xargs unterminated quote".

5 Answers

Does one of your filenames have a quote in it? Try something like this:

find . "(" -name "*.m" -or -name "*.h" ")" -print0 | xargs -0 wc -l 

The -print0 argument tells find to use the NULL character to terminate each name that it prints out. The -0 argument tells xargs that its input tokens are NULL-terminated. This avoids issues with characters that otherwise would be treated as special, like quotes.

2

This can happen because you have a single quote in a filename somewhere...

i.e., -> '

To find the problem file, run the following in the terminal:

\find . | grep \' 

you can also run xargs like so to effectively address this issue:

xargs -I 

and it can also happen if you have an alias for xargs setup that's causing an issue. To test if this is the case, just run xargs with a \ in front of it, e.g.

\find . | \xargs .... 

The \ simply means "run the command without any aliases"

The canonical way to solve quotes, spaces and special characters problems when using find is to use the -exec option instead of xargs.

For your case you can use:

find . "(" -name "*.m" -or -name "*.h" ")" -exec wc -l "{}" \; 

After some tinkering, I found that this command worked for me (because I had spaces and unmatched quotations in my filenames):

find . -iname "*USA*" -exec cp "{}" /Directory/to/put/file/ \;

. refers to the location the search is being run

-iname followed by the expression refers to the match criteria

-exec cp "{}" /Directory/to/put/file/ \; tells the command to execute the copy command where each file found via -iname replaces "{}"

You need the \; to denote to the exec command that the cp statement is ending.

Solved by replacing from source " with \"

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.