Найдите текстовые строки внутри каталога, а затем замените их, используя ssh [duplicate]

Я просто попытался загрузить в другой раз, и я исправил:)

-1
задан 8 December 2017 в 22:24

6 ответов

Вы должны выполнить ssh на удаленном компьютере и выполнить команду, описанную ниже.

Следующая команда заменит все вхождения «Hello» во всех файлах в определенном месте (по вашему выбору) с помощью «Привет».

find /path/to/main/parent/directory -type f -exec sed -i 's/hello/hi/gI' {} \;

Примечание

Вышеприведенный регистр нечувствителен к регистру, если вы хотите сменить регистр, вы можете попробовать удалить I, т.е. 's/Hello/Hi/g'

/path/to/main/parent/directory: вы должны указать родительский каталог, из которого начинается ваш файл, содержащий строку «Hello».

для URL

Из комментария Я узнал, что вы хотите заменить URL другим, содержащим ://. Поэтому, пожалуйста, используйте следующий метод для замены строк, содержащих URL.

find /path/to/main/parent/directory -type f -exec sed -i 's,/URL1/,/URL2/,gI' {} \;
3
ответ дан 22 May 2018 в 15:33
  • 1
    хм ... похоже, похоже, что он находит текстовые строки, но он не заменяет их тем, что я хочу. Он возвращает эту ошибку: sed: -e выражение # 1, char 11: неизвестный параметр `s ' – W.Scott7182 8 December 2017 в 15:54
  • 2
    К сожалению, перед {} есть пробел, я пропустил его при вставке. Я скорректировал команду сейчас. Попробуйте добавить пространство до {}. – Rooney 8 December 2017 в 16:02
  • 3
    я все еще получаю это & ​​lt; pre & gt; sed: -e выражение # 1, char 11: неизвестный параметр `s '& lt; / pre & gt; возможно, это то, что мне нужно скачать? – W.Scott7182 8 December 2017 в 16:05
  • 4
    Нет, вам нечего скачивать. Я считаю, что в вашей команде может быть опечатка. Можете ли вы вставить команду, которую вы используете? – Rooney 8 December 2017 в 16:09
  • 5
    find / var / www / html -type f -exec sed -i 's / twitter.com/VAMINyt/https://twitter.com/gI' ; {} \; – W.Scott7182 8 December 2017 в 16:20

Вы должны выполнить ssh на удаленном компьютере и выполнить команду, описанную ниже.

Следующая команда заменит все вхождения «Hello» во всех файлах в определенном месте (по вашему выбору) с помощью «Привет».

find /path/to/main/parent/directory -type f -exec sed -i 's/hello/hi/gI' {} \;

Примечание

Вышеприведенный регистр нечувствителен к регистру, если вы хотите сменить регистр, вы можете попробовать удалить I, т.е. 's/Hello/Hi/g'

/path/to/main/parent/directory: вы должны указать родительский каталог, из которого начинается ваш файл, содержащий строку «Hello».

для URL

Из комментария Я узнал, что вы хотите заменить URL другим, содержащим ://. Поэтому, пожалуйста, используйте следующий метод для замены строк, содержащих URL.

find /path/to/main/parent/directory -type f -exec sed -i 's,/URL1/,/URL2/,gI' {} \;
3
ответ дан 18 July 2018 в 01:36

Вы должны выполнить ssh на удаленном компьютере и выполнить команду, описанную ниже.

Следующая команда заменит все вхождения «Hello» во всех файлах в определенном месте (по вашему выбору) с помощью «Привет».

find /path/to/main/parent/directory -type f -exec sed -i 's/hello/hi/gI' {} \;

Примечание

Вышеприведенный регистр нечувствителен к регистру, если вы хотите сменить регистр, вы можете попробовать удалить I, т.е. 's/Hello/Hi/g'

/path/to/main/parent/directory: вы должны указать родительский каталог, из которого начинается ваш файл, содержащий строку «Hello».

для URL

Из комментария Я узнал, что вы хотите заменить URL другим, содержащим ://. Поэтому, пожалуйста, используйте следующий метод для замены строк, содержащих URL.

find /path/to/main/parent/directory -type f -exec sed -i 's,/URL1/,/URL2/,gI' {} \;
3
ответ дан 24 July 2018 в 17:25

Еще один вариант с использованием grep -Rl вместо find:

grep -Rl 'hello' /path/to/main/parent/directory | xargs -n1 sed -i 's|hello|hi|g'
1
ответ дан 22 May 2018 в 15:33

Еще один вариант с использованием grep -Rl вместо find:

grep -Rl 'hello' /path/to/main/parent/directory | xargs -n1 sed -i 's|hello|hi|g'
1
ответ дан 18 July 2018 в 01:36

Еще один вариант с использованием grep -Rl вместо find:

grep -Rl 'hello' /path/to/main/parent/directory | xargs -n1 sed -i 's|hello|hi|g'
1
ответ дан 24 July 2018 в 17:25

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

Похожие вопросы: