find: пути должны предшествовать выражению: `.'find: возможен ли шаблон без кавычек после предиката `-exec'?

find: пути должны предшествовать выражению: `.'find: возможен ли шаблон без кавычек после предиката `-exec'?

мне нужно выполнить эту команду в фоновом режиме

sudo find '/abc/abc/' -type f -exec sed 's/domain1\it/domain2\com/g' '{}' \; . &

но у меня есть две проблемы:

find: paths must precede expression: `.'
find: possible unquoted pattern after predicate `-exec'?

И снова, есть другие разумные способы «найти и заменить» быстрее, например:sudo find '/abc/abc/' -type f -exec sed 's/domain1\it/domain2\com/g' '{}' ; &может быть с помощью grep?

Спасибо

решение1

Существует ли /abc/abc/каталог? Где искать файлы? paths must preceed..Сообщение " " является криптосообщением. Расшифровывается оно так, что первый (или первые несколько) параметров findне являются деревом каталогов для findобхода. Поскольку остальные параметры являются " findвыражениями", то именно на это и жалуется.

Команда, которую вы -execвводите, должна быть завершена точкой с запятой ( ;). Но поскольку точка с запятой завершит (анализ) команды find, -execточка с запятой должна быть экранирована обратной косой чертой ( \). Таким образом

-exec ...command... \; Добро пожаловать в мир магии `найти`. Перечитайте `человека найти`.

Ваше sedвыражение неверно. Должно быть:

 sed -e 's/domain1\.it/domain2\.com/'

Обратная косая черта ( \) просто меняет флаг «специальной обработки» на следующий символ, поэтому domain1\itсоответствует « domain1it», а не « domain1.it». « \i» не является специальным символом, поэтому обрабатывается как « i».

Связанный контент