Для нахождения файла, содержащего строку, использовать grep
. Если Вы хотите найти, в котором файлы содержат СТРОКУ web/
и все подкаталоги:
grep-R "ПРЕДСТАВЛЯЮТ сеть в виде строки" /
Чтобы отредактировать файл и удалить строки, содержащие строку, туда много опций, но здесь два общих. Так как Вы хотите воздействовать на все строки, это действительно легко :)
Сначала Вы могли использовать grep
с -v
аргумент, чтобы инвертировать поиск и скрыть подобранные строки от вывода вместо того, чтобы показать им. Для Вашего первого файла давайте сделаем это использование sponge
. Это позволит нам читать Ваш файл, фильтровать его, затем запишет его обратно в тот же файл все в одном движении:
grep -v "sdajgeSTRINGdsad" foo.php | sponge foo.php
Для Вашего второго примера мы сделаем то же самое с grep
, но если Вы не имеете sponge
можно записать это в другой файл, затем положить обратно тот файл к настоящему имени:
grep -v "gdfhu98324STRING" bar.php > bar.php.cleaned
mv bar.php{.cleaned,}
Второй путь состоял бы в том, чтобы использовать sed
с d
команда удаления строки. Для Вашего первого примера мы будем использовать оперативное редактирование файла с опцией создать a .bk
файл резервной копии:
sed -i.bk '/sdajgeSTRINGdsad/d' foo.php
В значительной степени то же самое могло быть выполнено путем копирования файла, самостоятельно затем использующего sed, чтобы отфильтровать резервное копирование и перезаписать оригинал:
cp bar.php bar.php.bk
sed '/gdfhu98324STRING/d' bar.php.bk > bar.php
Теперь объединить эти две задачи! Давайте сделаем функцию, таким образом, можно неоднократно делать это с различными строками:
function nuke_string () {
string="$1"
path="$2"
grep -R -l "$string" "$path" | while IFS= read -r file; do
sed -i.bk "/$string/d" "$file"
done
}
После того как Вы создаете ту функцию, Вы могли использовать ее как это:
nuke_string "STRING" web/
Любым файлам, содержащим СТРОКУ в сети/, затем удалили бы те строки, и резервная копия будет сделана из исходной версии. Можно создать функцию как это в текущей оболочке, или можно записать это в Ваш .bashrc
файл и всегда имеет его доступный.