Получить имена файлов и записать их вместо предыдущего пространства имен

Если ping сообщает, что имя или служба неизвестны, я предполагаю, что у вас проблема с службой DNS. Вы пытались пропинговать IP-адрес вместо «google.com»? Вы можете узнать IP-адрес, соответствующий веб-сайту, с помощью таких инструментов, как

http://www.hcidata.info/host2ip.cgi

0
22.05.2019, 20:37
2 ответа

Первая команда sed(s/\//./)заменит все косые черты точкой в ​​содержимом файла , а не в имени файла.

Вторая sedкоманда(s/(namespace.Project).+/\1.$x/)добавит$x(все еще неизмененный путь к файлу )в пространство имен. Это приводит к ошибке в sed, поскольку содержит косые черты без экранирования, которые интерпретируются sed.

См. этот родственный вопрос .


Кроме того, прочитайте как безопасно использовать find -exec sh -c. Добавление {}непосредственно к содержимому bash — это кошмар безопасности.

0
28.04.2021, 23:33

ну, я нахожу свой путь... с переменными bash. Что-то вроде этого:

for i in `find -type f -iname *.cs`; do j=$(echo $i|sed -E 's/\.\//namespace Project\//g;s/\//./g; s/(\.[[:alnum:]]*\.cs$)//g'); sed -i -E "s/(namespace Project.+)/$j/g" $i ; done;
0
28.04.2021, 23:33

Теги

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