1. Przygotowalem sobie przyklad , dwa pliki z czego do jednego wrzucilem
int main() { cout << "hello"; system("pause"); return 0; }
Nie wiem czy main ma byc z gwiazdkami czy bez ...
2. Odpalam skrypt
$ ./test
./test: linia 9: błąd składni przy nieoczekiwanym znaczniku `then'
./test: linia 9: ` id [ "$plik" = '/*main*/' ]; then'
3. Przyglądam się liniom pokolei
"
for i in `ls -la` "
Polecenie
ls -la wykonane w terminalu
$ ls -la
razem 44
drwxr-xr-x 2 tx tx 4096 maj 23 13:06 .
drwxr-xr-x 3 tx tx 4096 maj 11 16:53 ..
-rwxr-xr-x 1 tx tx 9976 maj 13 21:55 a
-rw-r--r-- 1 x tx 1237 maj 13 21:55 a.c
-rw-r--r-- 1 tx tx 1951 mar 24 2011 f.png
-rw-r--r-- 1 tx tx 8227 maj 23 13:06 ron
-rwxr-xr-x 1 tx tx 158 maj 23 13:03 test
Lepiej przyjżyj sie jak taka petla działa, a własciwie czego potrzebuje, wykonujac przyklady w terminalu
https://www.cyberciti.biz/faq/bash-for-loop/Zróbmy sobie przyklad
#!/bin/bash
for i in `ls -la`
do
echo $i
done
Odpalmy teraz skrypt do celów testowych , a oto fragment wyniku
$ ./test
razem
44
drwxr-xr-x
2
tx
tx
4096
maj
23
13:16
.
drwxr-xr-x
3
tx
tx
4096
maj
11
16:53
..
-rwxr-xr-x
...
Wydzisz coś zrobił ? Zeby to poprawnie dzialalo byś musiał użyć komendy lub lini komend które wyswietlą tylko nazwy plików.
No to teraz naprawmy to
- stwórzmy ową komende która wyświetli tylko pliki ( wykonamy komende w terminau )
$ ls -la | grep ^"-" | awk '{printf $9 " " }'
a a.c f.png ron test
No widać działa, wyszukało tylko pliki, a po "
| awk '{printf $9 " " }' " pokazuje tylko ostatnia kolumne , czyli nazwy plików
Przetestujmy to w pętli for, czyli w skrypcie
#!/bin/bash
for i in `ls -la | grep ^"-" | awk '{printf $9 " " }'`
do
echo $i
done
A oto wynik skryptu:
- skoro mamy nazwe pliku to teraz jak wyszukać w pliku jakąś nazwe ?
id [ "$plik" = '/*main*/' ]; then
Co to jest "
id " ?
id
Print real and effective user id (uid)
https://ss64.com/bash/id.htmlNapewno oto Ci chodziło ?
Wpisz w wyszukiwarce internetowej "
linux wyszukiwanie znakow w pliku "
Dzieki znalezionym skąpym ale jednak informacjom dowiesz się że do wyszukiwania plików używa się komendy
find a do wyszukiwania w plikach
grep i owe znaki w pliku to
ciągi znaków.
Wystarczy że poszperasz w internecie a znajdziesz przyklady.
Teraz poczekam, czy znajdziesz jakies przykłady. Staraj się szukać także po angielsku.
Napiszę tylko że zamiast pętli możesz użyć
find.