Подтвердить что ты не робот

Получение ошибки "xargs unterminated quote" при попытке распечатать количество строк в терминале

Я хочу получить количество строк в моем приложении. Я использую этот код:

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

ie → '

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

\find . | grep \' 

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

\find . | \xargs ....

"\" просто означает "запустить команду без каких-либо псевдонимов"