Getting error “xargs unterminated quote” when tried to print the number of lines in terminal

谁都会走 提交于 2020-03-17 04:04:24

问题


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".


回答1:


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...

ie -> '

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

\find . | grep \' 

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"




回答3:


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 "{}" \;



回答4:


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.



来源:https://stackoverflow.com/questions/11649872/getting-error-xargs-unterminated-quote-when-tried-to-print-the-number-of-lines

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!