Использование SED для удаления определенной строки в файле конфигурации

Если это файлы в текущем каталоге , которые вы хотите перечислить:

ls./*abc*

Для циклического просмотра этих файлов:

for fname in./*abc*; do
    # do something with "$fname"
done

Если вы хотите найти их в текущем каталоге или где-либо в каком-либо подкаталоге (рекурсивно):

find. -type f -name '*abc*' -print

(это предполагает, что все имена, которые вы хотите найти, являются именами обычных файлов, т. е. не именами каталогов и т. д.)

Если вы хотите что-то сделать с этими именами:

find. -type f -name '*abc*' -exec sh -c '
    for fname do
        # do something with "$fname" here
    done' sh {} +

Использование шаблона подстановки **, доступного в некоторых оболочках (по умолчанию в zshи с shopt -s globstarвbash)для обратного сопоставления имен файлов:

for fname in./**/*abc*; do
    # do something with "$fname"
done

С оболочкой zsh, также убедившись, что мы сопоставляем только имена обычных файлов (, то есть не каталоги и т. д.):

for fname in./**/*abc*(.); do
    # do something with "$fname"
done

Связанные:

0
05.10.2020, 11:42
1 ответ

Исправлено путем использования +вместо /в качестве разделителя.

sed -i 's+include "/etc/nginx/software.conf";++' website

Спасибо за помощь.

0
18.03.2021, 22:59

Теги

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