как использовать grep в условном поиске до sed текстовой команды замены

Я пытаюсь изменить путь во всех из m3u файлов. Я знаю, что могу сделать это с regexxer f.e., но я пытаюсь изучить удар.

Это - команда, которую я выяснил, но она не работает.

grep -lr -i -e 'M:\\' * | xargs -0 sed -i 's/M:\\/T:\\/g'

Я подозреваю, но только подозреваю, это происходит из-за специальных символов в именах файлов. Как иметь дело с этим?

1
задан 4 September 2011 в 12:14

2 ответа

Finaly я нашел ответ:

grep -lr -i -Z -e 'm:\\' * | xargs -0 sed -i 's/M:\\/K:\\/g'

Я должен был добавить-Z для заботы, что каждое имя файла читается, а не весь набор в одной длинной строке.

3
ответ дан 3 December 2019 в 07:17

Это добилось цели:

изменить путь окон M:\ к точке монтирования в Ubuntu media/MODERNE MUZIEK

find -iname '*.m3u' -print0 | 
    xargs -0 sed -i 's/M:\\//\/media\/MODERNE\ MUZIEK\//g'

изменить наклонные черты влево на наклонные черты вправо

find -iname '*.m3u' -print0 | xargs -0 sed -i 's/\\/\//g'

Теперь я могу открыть свои экс-окна m3u файлы с плеером VLC в Ubuntu.
Это играет, неважно, сколько пробелов или странных символов находится в имени файла.

Это могло быть улучшено? мог это быть покончить grep сделать это условным выражением как в моей первой неудавшейся попытке? Почему grep не работал?

Спасибо за вход.

1
ответ дан 3 December 2019 в 07:17

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

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