Nowe posty

xx Fatal error: cannot connect to database! LMS (0)
2018-09-17, 21:53:02
xx Z wielu dystrybucji linuxa działają tylko dwie. Proszę o wsparcie (17)
2018-09-13, 22:00:57
xx Szukasz pracy? (1)
2018-09-11, 20:56:19
xx Dzielenie sieci, nadawanie masek (11)
2018-09-10, 23:07:05
xx konfiguracja dhcp server na ubuntu (1)
2018-09-07, 13:05:48
xx Jak zainstalować GIMPa? (16)
2018-09-05, 08:50:05
xx Odpowiednik Windowsowego Notepad++ (2)
2018-09-03, 08:05:23
xx JS w gulpie (0)
2018-09-01, 21:02:49
xx Błąd przy uruchamianiu make menuconfig (6)
2018-09-01, 18:14:55
xx [ Gra Za Darmo przez okreslony czas ] Warhammer 40,000: Space Marine (0)
2018-08-31, 17:28:45

Autor Wątek: Skrypt dokonujący zamiany nazwy w szukanych plikach  (Przeczytany 2682 razy)

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 10
    • Zobacz profil
Skrypt dokonujący zamiany nazwy w szukanych plikach
« dnia: 2017-01-27, 13:33:37 »
Witam,
mam pytanie czy jest ktoś kto mógłby mi pomóc ?
Mam 800 folderów
W każdym folderze są podfoldery i masę innych plików. Chodzi mi oto, aby znaleźć konkretny plik np. "plik.ctp" i zmienić jego zawartość.
W treści plików są znaczniki np. data{...}, konkurs{...}, których zawartość chciałbym zmienić. Ta zawartość w nawiasach ma różną długość.
I to koniec. Jest ktoś taki, kto wie jak zrobić coś takiego ?
Wiem, że to wyższa szkoła jazdy... :)
Z góry dzięki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2394
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • Linuxpedia.PL
Odp: Skrypt dokonujący zamiany nazwy w szukanych plikach
« Odpowiedź #1 dnia: 2017-01-27, 14:56:02 »
find -name "plik.ctp" -exec sed -i 'ToCoJestDoPozamieniania' "{}" \;

Ewentualnie, jak zabawa jest trochę większa:

#!/bin/bash

# Sprawdź, czy odpalono bez argumentu

if [ ! "$1" ]; then
   # Tak - wyszukaj wszystkie potrzebne pliki
   # i wywołaj sam siebie ($0) po kolei z każdym
   # znalezionym plikiem jako argumentem
   find -name "plik.ctp" -exec $0 "{}" \;
else
   # Nie - samotny argument jest plikiem do przetworzenia

   plik="$1"
   echo "Przetwarzam plik $plik"

   # tu robisz z "$plik" co chcesz, np
   DATA=`date "+%F"`
   KONKURS="o puchar prezesa"

   sed -i "s/data{[^}]*}/data{$DATA}/" "$plik"
   sed -i "s/konkurs{[^}]*}/konkurs{$KONKURS}/" "$plik"
fi
« Ostatnia zmiana: 2017-01-27, 14:58:55 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy