LINUX.ORG.RU

Подскажите решения некоторых каждодневных задачек.


0

0

Господа гуру UNIX. Подскажите, плз., решения таких проблем: 

1. Нужно переименовать несколько файлов по шаблону, например: *.txt в *.html. Чем это сделать, стандартный mv шаблоны не понимает (по крайней мере во FreeBSD, под которой работаю, как в других системах - не знаю)? Шелловый скрипт писать? Задачка-то частая, должно быть какое-то стандартное решение. 

2. Под шумок второй вопросец: надо сделать однотипное изменение в нескольких файлах, например заменить /usr/bin на /usr/local/bin. Пытался делать через sed, но эту заразу нужно учить сохранять изменение в тот же файл. Как это сделать? Иначе он всё изменённое гонит на stdout. Или мож другой путь есть? 
 
Задачки-то каждодневные, ради таких семечек перерывать горы манов, изобретать велосипеды? Может кто их уже решил для себя? Подскажите.
anonymous

именно так как ты и сказал - написать один раз скрипты по своему вкусу и пользоваться ими. все.

sasha999 ★★★★
()

Для Bourne-style shell:

=======

for f in *.txt; do
    t=$(echo "$f" |sed 's/\.txt$/.html/')
    mv "$f" "$t"
done

=======

for f in {whichever-files-you-want}; do
    sed 's#/usr/bin#/usr/local/bin#g' "$f" >"/tmp/$f" && \
    cat "/tmp/$f" > "$f"
done

=======

anonymous
()

Если нужно обрабатывать файлы во всех подкаталогах, начиная с
определённого, можно для плучения списка всех файлов для цикла for
использовать find:

for f in $(find /starting/dir -name '*.txt' -print); do
    # blah-blah...
done

anonymous
()

Ай, спасибочки большое. Искренне благодарен всм ответившим!!! Вопрос
задавал исключительно ради самообразования, поэтому, кому интересно
могут посмотреть решение проблем с других форумов:

1)Код:
find . -type f -and -name '*.txt' -exec /full/path/rename.pl {} \;

2) Это решается следеующей строчкой:
find . -type f -exec perl -p -i.old -e s/\/usr\/bin/\/usr\/local\/bin/ {} \;

При этом оригинальный файл будет сохранен с расширениь .old

anonymous
()

по поводу первого - man rename

ananas ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.