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

后端 未结 4 1151
情书的邮戳
情书的邮戳 2021-01-31 02:57

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
相关标签:
4条回答
  • 2021-01-31 03:34

    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.

    0 讨论(0)
  • 2021-01-31 03:35

    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.

    0 讨论(0)
  • 2021-01-31 03:37

    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 \' 
    

    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"

    0 讨论(0)
  • 2021-01-31 03:38

    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 "{}" \;
    
    0 讨论(0)
提交回复
热议问题