Muszę dodać tagi PHP otaczające plik. Łatwo je dołączyć za pomocą
find . -exec echo "?>" >> '{}' \;
ale w jaki sposób można poprzedzić tag <?php
?
text-processing
sed
Gilles „SO- przestań być zły”
źródło
źródło
sed
i pozwala na dodanie sufiksu kopii zapasowej.-i
nie jest przenośny, składnia różni się między implementacjami i przerywa dowiązania symboliczne. Lepiej skorzystaj z aplikacji przeznaczonej do edycji plików.Możesz użyć takiego
AWK
filtra,Gdzie
PREFIX
jest twój ciąg prefiksu php.źródło
Nie mogę jeszcze zostawić komentarza, ale zrobić to wszystko w jednym kroku:
źródło
Możesz to zrobić za pomocą linijki Perl:
Te
-0777
siły plików slurping tryb, więc cały plik jest odczytywany jako jednej linii.-p
umożliwia zapętlenie.-i
umożliwia edycję pliku na miejscu.^
wskazuje początek linii.Aktualizacja: jak wskazano w komentarzach, możesz wybrać automatyczne generowanie kopii zapasowej za pomocą
-i.bak
zamiast-i
. Zapewnia to dodatkowe bezpieczeństwo w przypadku błędów w poleceniu. Argumentem-i
staje się przyrostek kopii zapasowej.Podczas aktualizacji wiązki plików możesz uruchomić polecenie za pomocą
-i.backup${RANDOM}
, sprawdź, czy wszystkie pliki zostały poprawnie zaktualizowane, a następnie usuń wszystkie pliki z tym rozszerzeniem.źródło
-i
flagi bez przyrostka, należy ostrzec czytelników, że oznacza to brak kopii zapasowej . Za kilka znaków więcej (-i.bak
) otrzymasz kopię zapasową na wypadek, gdyby Twoja linijka zawiera literówkę. Dość prosta literówka (na przykład zapomnienie-p
flagi) może zepsuć cały dzień.sed
służy do edycji strumieni - plik nie jest strumieniem. Użyj programu przeznaczonego do tego celu, takiego jaked
lubex
.-i
Możliwośćsed
nie tylko nie jest przenośny, będzie to również przełamać wszelkie dowiązania mogą się pojawić, ponieważ zasadniczo usuwa go i odtwarza go, co nie ma sensu.źródło
ed
do tego celu, pokaż to w swojej odpowiedzi.Alternatywa do tego, co napisałeś o dodawaniu czegoś na końcu każdego pliku w katalogu (w
bash
):chociaż podoba mi się twój
find
liner :)źródło
$FNAME
powinno być$fname
- zgodnie z konwencją, kapitalizujemy zmienne środowiskowe (PAGER, EDITOR, SHELL, ...) i wewnętrzne zmienne powłoki (BASH_VERSION, RANDOM, ...). Wszystkie pozostałe nazwy zmiennych powinny zawierać co najmniej jedną małą literę. Konwencja ta pozwala uniknąć przypadkowego zastąpienia zmiennych środowiskowych i wewnętrznych.Jest prosty sposób
źródło