Нужен bash-скрипт
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 1
- ОС: kubuntu
Нужен bash-скрипт
Стоит задача: заменить во всех .txt файлах указанной директории одну фразу на другую
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Нужен bash-скрипт
man awk
man sed
поиск по форуму
десять минут размышлений
результат.
man sed
поиск по форуму
десять минут размышлений
результат.
-
- Сообщения: 67
- ОС: openSUSE 11 / Debian Lenny
Re: Нужен bash-скрипт
rename фраза1 фраза2 *.txt
От Кузбаса и до Затулинки, от вершин до глубиннейших руд
Анархисты Сибирской Республики нас к предельной свободе ведут
Анархисты Сибирской Республики нас к предельной свободе ведут
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
-
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Нужен bash-скрипт
иногда лучше жевать ....
Код: Выделить всё
rename:
NAME
rename - Rename files
SYNOPSIS
rename from to file...
Код: Выделить всё
NAME
rename - renames multiple files
SYNOPSIS
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-
- Сообщения: 67
- ОС: openSUSE 11 / Debian Lenny
Re: Нужен bash-скрипт
Хммм... Не знал, что в сусе функция rename нестандартная... Мне вот очень помогает
Код: Выделить всё
RENAME(1) Linux Programmer's Manual RENAME(1)
NAME
rename - Rename files
SYNOPSIS
rename from to file...
DESCRIPTION
rename will rename the specified files by replacing the first occurrence of from in their name by to.
От Кузбаса и до Затулинки, от вершин до глубиннейших руд
Анархисты Сибирской Республики нас к предельной свободе ведут
Анархисты Сибирской Республики нас к предельной свободе ведут
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Нужен bash-скрипт
Upliner, команда rename переименовывает файлы.
А не заменяет внутри текстовых файлов одну строку на другую.
Она меняет имя файла. Имя, сестра, имя. А не содержимое. Содержимое она не меняет, шерсть на носу. Вот если бы она меняла содержимое, то эта была бы та команда, которую хотел автор этого поста. А она не меняет содержимое, шерсть на носу, она только имя меняет... Поэтому автору темы она никак не поможет, шерсть на носу...
А не заменяет внутри текстовых файлов одну строку на другую.
Она меняет имя файла. Имя, сестра, имя. А не содержимое. Содержимое она не меняет, шерсть на носу. Вот если бы она меняла содержимое, то эта была бы та команда, которую хотел автор этого поста. А она не меняет содержимое, шерсть на носу, она только имя меняет... Поэтому автору темы она никак не поможет, шерсть на носу...
-
- Сообщения: 67
- ОС: openSUSE 11 / Debian Lenny
Re: Нужен bash-скрипт
Тьфу-ты, из контекста не понял, где менять надо, в имени, или в содержании... на этот случай нашлась команда replace, но она тоже нестандартная(вообще входит в пакет mysql)... выглядело бы как replace фраза1 фраза2 -- *.txt
Так что, если у товарища стоит MySQL, проблема решена...
Так что, если у товарища стоит MySQL, проблема решена...
От Кузбаса и до Затулинки, от вершин до глубиннейших руд
Анархисты Сибирской Республики нас к предельной свободе ведут
Анархисты Сибирской Республики нас к предельной свободе ведут
-
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
-
- Сообщения: 296
- ОС: fedora, mandriva
Re: Нужен bash-скрипт
Код: Выделить всё
echo test | sed s/"test"/"nest"/
bash скрипт, это скорее всего
Код: Выделить всё
#!/bin/bash
d_folder="$1"
file_list=`ls $d_folder/*.txt`
for f in $file_list
do
temp=`cat $f`
echo "$temp" | sed s/"one"/"changed"/ >$f
done
exit 0
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Нужен bash-скрипт
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Нужен bash-скрипт
Код: Выделить всё
find /path -maxdepth 1 -name "*.txt" -exec sed -i s/фраза для поиска/фраза для замены/g {} \;
ps упс не посмотрел на дату первого поста...
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Нужен bash-скрипт
почему нельзя запихать s/.../.../ в script.sed, а потом
Код: Выделить всё
./script.sed -i *.txt
?
а я - посмотрел

-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Нужен bash-скрипт
Я вижу в этом 2 препятствия:
1. Если нужно охватить txt файлы лежащие в поддиректориях, то необходимо совершать дополнительные телодвижения.
2. ИМХО, когда есть возможность не создавать лишних файлов со скриптами, я предпочитаю все сделать прямиком из командной строки (в пределах разумного, само собой разумеется).
А вообще, раз уж на то пошло, то можно обойтись и вовсе:
Код: Выделить всё
sed -i "s_---_///_g" *.txt
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Нужен bash-скрипт
SLEDopit писал(а): ↑06.03.2010 16:35Я вижу в этом 2 препятствия:
1. Если нужно охватить txt файлы лежащие в поддиректориях, то необходимо совершать дополнительные телодвижения.
2. ИМХО, когда есть возможность не создавать лишних файлов со скриптами, я предпочитаю все сделать прямиком из командной строки (в пределах разумного, само собой разумеется).
1) ага. но тут этого не надо.
2) согласен с вами. однако, ТС требовал скрипт - и вот ему скрипт (думаю без разницы, что не bash)