У меня есть рабочее пространство Xcode с несколькими сотнями png-файлов и вы хотите перечислить те, которые не указаны.Найти unreferenced png-файлы в рабочей области Xcode
Пример PNGs:
capture-bg-1.png
[email protected]
promo_icon.png
[email protected]
Ссылочный пример для "promo_icon" (XML-файл):
<string>promo_icon</string>
Ссылочный пример для "promo_icon" (Objective-C):
[UIImage imageNamed:@"promo_icon"]
Я хочу получить список имен файлов, включая «capture-bg-1» (предполагая, что у него нет совпадений, подобных «promo_icon»).
Небольшая морщина - это файл .pbxproj (XML), который имеет ссылку на каждый png-файл в рабочей области, чтобы файл был исключен из поиска.
Следующая команда получает все уникальные части имени файла (за исключением папки и всего после «@» и «.») Для оценки.
find . -name *.png -exec basename {} \;| sed 's/[[email protected]].*$//' | uniq
Эта часть grep, в которую я буду обращаться с файлами, является проблемой. Этот grep находит файлы, которые делают или не ссылаются на «promo_icon» и перечисляют ссылки. Пустое возвращаемое значение (без ссылки) будет PNG-файл Я ищу список:
grep -I -R promo_icon . | grep -v pbxproj
Однако я не могу понять, как совместить два в функциональном стиле. Существует этот фрагмент (https://stackoverflow.com/a/16258198/26235) для этого в sh, но он не работает.
Вместо '-exec {} базовое имя \;' вы должны просто сделать '-printf% f'. Тот же результат, но не нужно вызывать подоболочку для каждого файла. Кроме того, ваш 'uniq' не работает правильно: он работает корректно только в отсортированных списках. Попробуйте 'sort -u' вместо этого. – dg99
И, кстати, если '.pbxproj' имеет ссылку на каждый png-файл, почему бы просто не использовать его содержимое напрямую, а не запускать' find' вообще? – dg99
'find' очень быстрая, поэтому нет необходимости разбирать файл' .pbxproj'. Другой совет очень полезен, хотя, спасибо. –