Вот версия Swift 3.0:
extension UIViewController: UIGestureRecognizerDelegate {
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view is UIButton {
return false
}
return true
}
Не забудьте:
Make your tapper object delegate to self (e.g: tapper.delegate = self)
Самый простой способ заменить ( все файлы, каталог, рекурсивный )
find . -type f -not -path '*/\.*' -exec sed -i 's/foo/bar/g' {} +
Примечание: Иногда Вы, возможно, должны были бы проигнорировать некоторые скрытые файлы т.е. .git
, можно использовать выше команды.
, Если Вы хотите включать использование скрытых файлов,
find . -type f -exec sed -i 's/foo/bar/g' {} +
В оба, случаются, строка foo
будет заменена новой строкой bar
find /home/www \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/subdomainA\.example\.com/subdomainB.example.com/g'
Из man find
:
-print0 (только GNU
find
) сообщаетfind
использовать нулевой символ (\ 0
) вместо пробела в качестве разделителя вывода между найденными путями. Это более безопасный вариант, если ваши файлы могут содержать пробелы или другие специальные символы. Рекомендуется использовать аргумент-print0
дляfind
, если вы используете-exec
илиxargs
(-0
аргумент необходим вxargs
. )
Примечание : не запускайте эту команду в папке, содержащей репозиторий git - изменения в .git могут повредить ваш индекс git.
find /home/www/ -type f -exec \
sed -i 's/subdomainA\.example\.com/subdomainB.example.com/g' {} +
По сравнению с другими ответами здесь, это проще чем большинство, и использует sed вместо perl, что и было задано в исходном вопросе.
cd /home/www && find . -type f -print0 |
xargs -0 perl -i.bak -pe 's/subdomainA\.example\.com/subdomainB.example.com/g'
find /home/www/ -type f -exec perl -i.bak -pe 's/subdomainA\.example\.com/subdomainB.example.com/g' {} +
find / home / www / -type f
выведет список всех файлов в / home / www / (и его подкаталогах).
Флаг «-exec» указывает команде find запускать следующую команду для каждого найденного файла:
perl -i.bak -pe 's/subdomainA\.example\.com/subdomainB.example.com/g' {} +
- это команда, выполняемая для файлов (многих одновременно). {}
заменяется именами файлов.
+
в конце команды указывает find
создать одну команду для многих имен файлов.
Согласно справочной странице find
:
"Командная строка построена примерно так же, как
xargs создает свои командные строки. "
Таким образом, можно достичь своей цели (и обрабатывать имена файлов, содержащие пробелы) без использования xargs -0
или -print0
.
Попробуйте это:
sed -i 's/subdomainA/subdomainB/g' `grep -ril 'subdomainA' *`
Более простой способ - использовать в командной строке следующее
find /home/www/ -type f|xargs perl -pi -e 's/subdomainA\.example\.com/subdomainB.example.com/g'