Sziasztok!
Szeretném egy adott könyvtárból($DIRBOL) átmásonlni bizonyos fájlokat egy másik könyvtárba($DIRBE), a következő feltételekkel:
1. Van egy nevek.txt fájlom, amibe soronként találhatóak bizonyos karakterek, pl. nevek: Bela, Jani, Mari. Helye: $DIRBOL/nevek.txt
****
Bela
Jani
Mari
--eof--
2. $DIRBOL-nek vannak alkönyvtárai, amiben rengeteg fájl van. SZeretném nevek szerint szétválogatni a fájlokat és egy másik könyvtárba másolni.
A fájlok elnevezése: nev_szam.jpg (pl. Jani_116.jpg) Ebből a nevére szeretnék keresni, tehát egy névhez több fájl tartozik.
#!bin/bash
DIRBOL=
DIRBE=
NEVEK= cat -b < $DIRBOL/nevek.txt
for masoltfajl in find $DIRBOL "*$NEVEK*.jpg"
do
cp $masoltfajl $DIRBOL/$masoltfajl
done
Valami ilyesmire gondolok nem tudom mennyire kapisgálok jó helyen!
A $nevek változót igazából nem sikerül rábírnom, hogy csak egy sort adjon be, mert így az egész fájl kezeli!
Valaki tudna Nekem ebben segíteni, hogy működöképes legyen a szkript! Esetleg milyen parancsokat, kapcsolókat nézzek meg az is nagy könnyítés lenne.
Előre is köszönöm!
- 1681 megtekintés
Hozzászólások
while read nev;do echo $nev;done < nevek.txt
bela
jani
Mari
- A hozzászóláshoz be kell jelentkezni
ez a nevek.txt fájl sorait adja be? pl. bela
- A hozzászóláshoz be kell jelentkezni
azt igen, hisz
- azt kerdezted
- le is irta
bonyi kiprobalni, mi?
t
- A hozzászóláshoz be kell jelentkezni
nem, nem próbálom mindjárt
- A hozzászóláshoz be kell jelentkezni
vagy for nev in $(cat nevek.txt);do
.....
done
t
- A hozzászóláshoz be kell jelentkezni
Jaja, az is jo megoldas. Persze csak ha egy szo a nev. Bar gondolom ennyire nem bonyolult a szerkezet.
- A hozzászóláshoz be kell jelentkezni
szintaktikai hibát ír ki a do-ra?!!
- A hozzászóláshoz be kell jelentkezni
????
for nev in $(cat nevek.txt);do 717 12:25
for> .....
for> done
zsh: command not found: .....
zsh: command not found: .....
zsh: command not found: .....
for nev in $(cat nevek.txt);do 718 12:25
echo $nev
done
bela
mari
jani
- A hozzászóláshoz be kell jelentkezni
$DIRBOL=
$DIRBE=
$NEVEK= cat -b < $DIRBOL/nevek.txt
Bocs, de ez igy sh-ban nem azt jelenti amire te gondolsz.. (perl-ben lehetne valami hasonlo ertelme)... Szerintem helyesen igy nezne ki:
DIRBOL=
DIRBE=
NEVEK=`cat <$DIRBOL/nevek.txt`
A cat-nak meg miert kell megsorszamoznia a soraidat?
Amugy meg lasd fentebb...
Zsiraf
- A hozzászóláshoz be kell jelentkezni
ciklussal vegigmesz a nevek file-on, match-elsz regexpet, nezel konyvtarat, h letezik-e, masolsz, orulsz, ennyi.
t
- A hozzászóláshoz be kell jelentkezni
Előről kezdtem az egészet!
#!/bin/bash
DIRBOL=
nevek=`while read nevek;do echo $nevek; done< $DIRBOL/nevek.txt`
find $DIRBOL -name "*$nevek*.jpg" -print
--EOF--
Eddig működik a szkript, de csak akkor ha egy sor van a nevek txt fájlban, ha már hármat rakok bele már nem keres rendesen.
Mi lehet probléma?
- A hozzászóláshoz be kell jelentkezni
Miert akarod mindenaron ``-ba rugni azt a nyamvadt filet?
while read nevek;
do
find $DIRBOL -name "*$nevek*.jpg" -print
done < $DIRBOL/nevek.txt
Amugy nekem ugy tunik h 1 bash rovidtalpalo erdemes lenne elolvasni, ott feltarnak ilyen temakort is, hat meg az advanced bash.... tldp.org.
- A hozzászóláshoz be kell jelentkezni
Igen elég csekély tudásom van, most kezdtem csak nézegetni a nyelvet.
Amit az előbb írtál ciklust az jó lenne csak nem áll meg hanem lefut az összes .jpg fájl, pedig 3 sor van a txt fájlban.
- A hozzászóláshoz be kell jelentkezni
A probléma, hogy nem olvasol BASH man-t!
a
nevek=`vmi`
után a $nevek-ben lesz a vmi parancs kimenete. A TELJES.
while read nevek
do echo $nevek
echo "vmit kéne ezzel csinálni..."
done < $DIRBOL/nevek.txt
- A hozzászóláshoz be kell jelentkezni
Itt a 2. és 3. sort írja ki!
Én pedig a .txt-ben lévő 3 sort szeretném megkeresni a fájlok nevében, aztán kiírni, pontosabban majd átmásolni egy könyvtárba.
- A hozzászóláshoz be kell jelentkezni
#!bin/bash
DIRBOL=
DIRBE=
for nevek in $(cat $DIRBOL/nevek.txt)
do
find $DIRBOL -name "*$NEVEK*.jpg" -print
done
Eddig jó a fájl, kírja amit keresek. Viszont a erednényt szeretném DIRBE másolni. DE se |-pal sem > nem működik. Ebben tudnátok még segíteni!
cp a szintaktisa, hogyan lehet Neki paramétert átadni?
- A hozzászóláshoz be kell jelentkezni
http://hup.hu/node/9545
http://hup.hu/node/6304
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html (angol)
http://tldp.org/LDP/abs/html (angol)
Ezeket erdemes atbujni.(Utolso utan mar eleg penge kell hogy legyel... :o) )
- A hozzászóláshoz be kell jelentkezni
Ezek valóban hasznos oldalak, főleg a magyar, mert azt jobban értem azért.
- A hozzászóláshoz be kell jelentkezni
for minta in Mari \
Bela \
Jutka \
akarki
do
ez_a_file_kell=`ls $DIRBOL|grep $minta`
cp $DIRBOL/$ez_a_file_kell $DIRBE/$ez_a_file_kell
done
nem köll oda külön lista fájlban, ha kevés a név.
--
unix -- több, mint kód. filozófia.
- A hozzászóláshoz be kell jelentkezni
Upsz, elfeledtem, hogy a behúzások eltűnnek...
--
unix -- több, mint kód. filozófia.
- A hozzászóláshoz be kell jelentkezni
KB. vagy ötven ezért gondoltam külön listát, mert azt később is lehet bővíteni, karbantartani, Ami eddig kész van az műxik, abból nem lehet valahogy átmásolni azokat a fájlokat amit összegyűjt?
- A hozzászóláshoz be kell jelentkezni
man find, egyébként meg find ..... -exec mv {} idebele/\;
- A hozzászóláshoz be kell jelentkezni
Akkor ez az esetemben így lenne?
find $DIRBOL -name "*$NEVEK*.jpg" -exec rm {} $DIRBE
- A hozzászóláshoz be kell jelentkezni
Hat, ha a $DIRBE-be bele akarsz torolni, akkor igen.
- A hozzászóláshoz be kell jelentkezni
ja, ja, még mielőtt elküldesz kezdő UNIX tanfolyamra is...:)
find $DIRBOL -name "*$NEVEK*.jpg" -exec mv {} $DIRBE
- A hozzászóláshoz be kell jelentkezni
Nem, flamelni akarok, csak tenyleg ugy nekiallni valaminek, hogy semmi alapod, persze ugyis lehet, de szerintem erdemes egy rovidke fel orat eltolteni azzal, hogy mi a syntax, par exampelt elolvasni nezelodni.
Magadnak is jot teszel(nem gyalulod le a gepet, tanulsz, stb..)
Szoval hajra. A doksikat elolvasod mar siman megirod magadtol.
rm-el meg ovatosan :o)
- A hozzászóláshoz be kell jelentkezni
Köszi, a doksikat, mindenképpen átnézem!
- A hozzászóláshoz be kell jelentkezni