[Megoldva] Azonos hosszusagu, szamokat tartalmazo filenevek , osszefuzes, bash

Lehet, hogy mar volt, elnezest, nem talalom. Szoval van egy konyvtar, amiben van 50000 file, 00000001-00050000-ig (vagyis ennel joval tobb van...1M-s fileok es cca 80G az image, ami kijonne belole. Egyebkent egy XEN virt. gep).

Szeretnem osszefuzni (cat tunik a legjobbnak). Mukodik a
for i in * ; do cat $i >> img ; done
de nem vagyok biztos benne, hogy rendesen, nev szerint nezi...
Probalkoztam a
for i in {00000001..00050000} kifejezessel is, de ez logikus modon (legalabbis echo eseten...) levagja a kezdo nullakat.
for i in $(seq 00000001 00050000)
ugyanez, vagyis a kezdo nullak eltunnek....
Mit lehetne tenni?

Hozzászólások

Ez nem jo?
cat * >img

A cat ugye tobb file-t is kaphat bemenetnek.. a bash meg a *-odat abc novekvo sorrendben adja at a cat-nek.

Egyebkent igy pl. meg lehet oldani:
padded=`printf %08d "$i"`

--
Az emberek azt állítják, hogy múlik az idő, az idő viszont csak mosolyog, mert látja, hogy az emberek múlnak. - tibeti közmondás

"for i in $(seq 00000001 00050000)
ugyanez, vagyis a kezdo nullak eltunnek...."

Szigorúan csak a fenti részt kommentálva:


$ seq -w 1 00050000 | head
00000001
00000002
00000003
00000004
00000005
00000006
00000007
00000008
00000009
00000010

Igen, a -w jo volt :) De mmint kiderult, a xen image-nel a nulla tartalmu reszeket nem mneti (egesz pontosan 1M-s reszekre vagja, ezeket tarolja, es ahol nulla volt, azt nem menti, ezt a sorszammal jelzi, tehat 00000034 uan esetleg 00000079 kovetkezik...), szoval ez lett ra jo:
http://wiki.sysconfig.org.uk/display/howto/Convert+Citrix+XenServer+ima…

De ez persze csak erre a specialis esetre kellett, a "seq -w" teljesen jo amugy.
--
http://www.micros~1

én így csinálnám

##########################################
rm -f /valahol/xen.img
ls -1 xendir > mashova/dir.lst
cat < mashova/dir.lst | while read XENFILE
do
cat < $XENFILE >> /valahol/xen.img
done
echo "** DONE"
#########################################

figyeljük meg a kettős kacsacsőrt (append)!!

> Sol omnibus lucet.

Ha az ls abc sorrendben listaz, akkor jo. De errol nem tudtam.

Amugy ezt a megoldast en is szoktam hasznalni, pont itt a hup-on tanultam. Pl. kikeresni egy levelet a mail.logbol, ugy, hoyg csk a felado, vagy a cimzett vagy barmi hasonlo ismert:
grep "cel" /var/log/maillog | awk {print $6} | sort |uniq | grep -v "^:$" > /tmp/ml.$$; while read; do grep $REPLY /var/log/maillog >> ~/eredmeny.txt; done < /tmp/ml.$$; rm /tmp/ml.$$

Lehet, hoyg nem jol irtam, postfiox lognal a 6. mezo a level ID, ez egyedi, viszont a level egesz eletutjan feltunik. Viszotn neha csak ":" a talalat, ezt inkabb ne keresse :) Meg a "NOQEUE"-t se, abbol tobbezer van naponta :), de ezt most nem szurtam bele.

--
http://www.micros~1