bash skrypt z wykorzystaniem pętli for
-
- Piegowaty Guziec
- Posty: 4
- Rejestracja: 05 lut 2009, 09:49
- Płeć: Kobieta
- Wersja Ubuntu: 8.10
- Środowisko graficzne: GNOME
bash skrypt z wykorzystaniem pętli for
mam problem z napisaniem wydaje się prostego skryptu:
mam plik tekstowy w którym mam listę plików które chcę skopiować...
jak napisać taki skrypt... prawdopodobnie trzeba będzie wykorzystać pętlą for......
mam plik tekstowy w którym mam listę plików które chcę skopiować...
jak napisać taki skrypt... prawdopodobnie trzeba będzie wykorzystać pętlą for......
-
- Piegowaty Guziec
- Posty: 8
- Rejestracja: 06 lut 2007, 08:23
- Płeć: Mężczyzna
- Wersja Ubuntu: 6.10
- Środowisko graficzne: LXDE
- Architektura: x86
Odp: bash skrypt z wykorzystaniem pętli for
1) Skopiowanie wszystkich plików z bieżącego katalogu
2) Skopiowanie plików, gdzie informacje o ścieżce są podane w pliku tekstowym
Pozdrawiam
Kod: Zaznacz cały
for i in *
do
cp $i /home/jacob/tmp
done
Kod: Zaznacz cały
liczba=`cat plik.txt | wc -l`
for i in `seq $liczba`
do
nazwa=`head -$i plik.txt | tail -1`
cp $nazwa /home/jacob/tmp
done
-
- Sędziwy Jeż
- Posty: 41
- Rejestracja: 11 sty 2009, 01:35
- Płeć: Mężczyzna
- Środowisko graficzne: Brak
Odp: bash skrypt z wykorzystaniem pętli for
Troszkę przekombinowałeśJacob pisze:Kod: Zaznacz cały
liczba=`cat plik.txt | wc -l` for i in `seq $liczba` do nazwa=`head -$i plik.txt | tail -1` cp $nazwa /home/jacob/tmp done

Lepiej
Kod: Zaznacz cały
while read plik; do
cp "$plik" /katalog/docelowy/
done < plik.txt
Nie toleruję zmuszania do reklam...
-
- Piegowaty Guziec
- Posty: 8
- Rejestracja: 06 lut 2007, 08:23
- Płeć: Mężczyzna
- Wersja Ubuntu: 6.10
- Środowisko graficzne: LXDE
- Architektura: x86
Odp: bash skrypt z wykorzystaniem pętli for
Faktycznie, przekombinowałem, ale grunt, że działa
Pozdrawiam

Pozdrawiam
- хur
- Sędziwy Jeż
- Posty: 79
- Rejestracja: 15 sty 2008, 23:40
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
Odp: bash skrypt z wykorzystaniem pętli for
a muszą być pętle ?
może dało by się tak:
albo
pierwsze rozwiązanie ma tę wadę że wielkość pliku nie
może być większa niż rozmiar tego co normalnie można
przekazać przez parametry (afaik 32KiB, jak źle pamiętam
to proszę mnie poprawić).
Drugie powyższej wady nie posiada, bo xargs dba o to
żeby cp dostało tyle ile da radę na raz przyjąć.
EDIT:
zapomniałem o jednej sprawie która dotyczy zarówno
readline (LF) jak i xargsa (LF & spacja),
tzn. OP nie napisał co jest delimiterem
(w xargs od tego jest opcja -d, ew. --null).
Jeśli nazwy plików zawierają białe znaki to mój przykład
z xargsem trzeba przerobić, tzn. użyć -d cośtam lub --null
w zależności od potrzeb.
może dało by się tak:
Kod: Zaznacz cały
cp -t katalog_docelowy $(<plik_z_listą_plików)
Kod: Zaznacz cały
cat plik_z_listą_plików | xargs cp -t katalog_docelowy
może być większa niż rozmiar tego co normalnie można
przekazać przez parametry (afaik 32KiB, jak źle pamiętam
to proszę mnie poprawić).
Drugie powyższej wady nie posiada, bo xargs dba o to
żeby cp dostało tyle ile da radę na raz przyjąć.
EDIT:
zapomniałem o jednej sprawie która dotyczy zarówno
readline (LF) jak i xargsa (LF & spacja),
tzn. OP nie napisał co jest delimiterem
(w xargs od tego jest opcja -d, ew. --null).
Jeśli nazwy plików zawierają białe znaki to mój przykład
z xargsem trzeba przerobić, tzn. użyć -d cośtam lub --null
w zależności od potrzeb.
-
- Piegowaty Guziec
- Posty: 4
- Rejestracja: 05 lut 2009, 09:49
- Płeć: Kobieta
- Wersja Ubuntu: 8.10
- Środowisko graficzne: GNOME
Odp: bash skrypt z wykorzystaniem pętli for
dzięki.... jeszcze jedno szybkie pytanie ... jakie polecenie będzie dodawało linię w pliku tekstowym zamiast nadpisywać istniejące dane...?
- хur
- Sędziwy Jeż
- Posty: 79
- Rejestracja: 15 sty 2008, 23:40
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
Odp: bash skrypt z wykorzystaniem pętli for
w sumie to piszesz "polecenie" ale tak sobie
myślę że możesz mieć na myśli operator,
tzn.
echo 'foo' > plik
usunie dotychczasową zawartość, po takim wywołaniu
plik będzie zawierał linię z 'foo' i tyle.
echo 'foo' >> plik
dopisze linię 'foo' do pliku.
Jeśli chodzi o polecenia do nieinteraktywnej edycji
używa się głównie seda i awka.
myślę że możesz mieć na myśli operator,
tzn.
echo 'foo' > plik
usunie dotychczasową zawartość, po takim wywołaniu
plik będzie zawierał linię z 'foo' i tyle.
echo 'foo' >> plik
dopisze linię 'foo' do pliku.
Jeśli chodzi o polecenia do nieinteraktywnej edycji
używa się głównie seda i awka.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 19 gości