2012-07-25 3 views
22

Я хочу получить количество строк в моем приложении. Я использую этот код:Получение ошибки «xargs unterminated quote» при попытке распечатать количество строк в терминале

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

Он работает отлично в других приложениях, но для одного из моих приложений он дает ошибку «xargs незаконченной глоба цитате».

ответ

49

Имеет ли в вашем имени одну из ваших имен файлов? Попробуйте что-то вроде этого:

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

-print0 аргумент указывает find использовать символ NULL для завершения каждого имени, что он печатает. Аргумент -0 сообщает xargs, что его токены ввода заканчиваются NULL. Это позволяет избежать проблем с символами, которые в противном случае будут рассматриваться как специальные, например, кавычки.

+0

Большое вам спасибо Gary – Lena

+3

Я попытался удалить все .svn папку и ниже работает для меня: найти ./ - name ".svn" -print0 | xargs -0 rm -Rf –

+0

Некоторые объяснения будут приветствоваться;) – AsTeR

7

Это может произойти потому, что у вас есть апостроф в имени файла, где-то ...

т ->'

Чтобы найти проблемный файл, выполните следующую команду в терминале:

\find . | grep \' 

, и это также может произойти, если у вас есть псевдоним для установки xargs, который вызывает проблему. Чтобы проверить, если это так, просто запустите xargs с «\» перед ним, например.

\find . | \xargs .... 

«\» означает просто «запустить команду без псевдонимов»

 Смежные вопросы

  • Нет связанных вопросов^_^