Как запустить найти cmd с NSTask

Я пытаюсь заставить следующую команду find работать через NSTask:

find /Users/user/projects ! -path '*.git*' -ctime -1

Однако у меня возникли проблемы, чтобы заставить часть игнорирования пути работать. В терминале работает нормально. Я получаю измененные файлы за последние 24 часа, за исключением каталогов.git. При использовании NSTask каталоги.git не игнорируются, что приводит к слишком большому количеству положительных результатов...... Я использую следующие аргументы:

NSArray *args = @[@"/Users/user/projects", @"!", @"-path", @"'*.git*'", @"-ctime", @"-1"];

Кто-нибудь знает, что я делаю не так?

2 ответа

Решение

Я думаю, что вы должны заменить аргумент

@"'*.git*'"

от

@"*.git*"

в противном случае find игнорирует только файлы с именами '*.git*' (Дословно). Обратите внимание, что оболочка удаляет одинарные кавычки при выполнении команды в Терминале.

Вы также можете найти это легче сделать.

NSString *argString = @"/Users/user/projects ! -path '*.git*' -ctime -1";
[nsTaskName setArguments: [argString componentsSeparatedByString: @" "]];

Когда вы отлаживаете свои аргументы в терминале, вы можете просто сделать копию и вставить и добавить 'find ' перед ним.

Другие вопросы по тегам