Datum es fileok

Hello,

Nem sok scriptet irtam meg linux alatt es elkellene egy kis segitseg.. szoval megkell oldanom, hogy azokat a fileoket aminek a vegen egy nagy H betu van azokat berakja egy kulon dir-be es a dir-nek olyan nevet ad amilyen datummal lett a file krealva... barmilyen otletnek orulnek vagy egy indulasi iranynak..
Koszonom.

Hozzászólások

Alapnak megteszi szerintem:

for i in `find . -name "*H"` ; do DDIR=`ls -l $i |cut -d \ -f 7`; set NAME=basename $i; if [ ! -e /tmp/$DDIR ] ;then mkdir /tmp/$DDIR; fi ; cp $i /tmp/$DDIR/$NAME; done

Csak be kell másolnod egy BASH paranccsorba és megy. A tmp könyvtárba dolgozik egyelőre.

Ami elől menekülnek, az után szaladnak.

Hja, a sok-sok windóz nélkül eltöltött idő.....
:)
Azért a fő dolgokat megcsinálja rendesen, ezen el lehet indulni.
Ha van pontosabb spec, akkor meg tudom neked csinálni készre is akár.
És csak egy sor az egész...

Kíváncsi vagyok, hogy windózon hogyan lehet az ilyesmit megoldani....
Ha van valakinek ötlete örülnék ha közölné.

Ami elől menekülnek, az után szaladnak.

...nem tudom de mondjuk egyszerubb lenne ha minden file nev a datummal kezdodne ev nelkul mondjuk 0714filenevH es akkor olyan direktoriumot csinalna ami az elso negy karakter a file neveben es ha mar van olyan dir akkor csak bele masolna?

find . -name '*H' -exec sh -c 'D=`date +%Y%m%d -r {}`; mkdir $D 2>/dev/null; mv {} $D;' \;

Vegulis kicsit mas scriptem lett ami igy nez ki
"
#!/bin/bash
SEARCHDIR="$1"
DESTDIR="$2"
list=$(find $SEARCHDIR -name "*[HH]*.doc" -print)

for f in $list
do
d=$(dirname $f)
ff=$(echo $f | awk -F"$d" '{ print $2}')
mydir=$(echo $ff | cut -b1-5)
mkdir $DESTDIR/$mydir
echo "Coping file: $f => ${mydir}${ff}"
cp $f $DESTDIR/${mydir}${ff}
done
"
Egy kulso filebol olvasom ki, honnan es hova masolja at a megadott filet. Csak egy problemam van vele, ha a direktorium neveben van hely pl. "ez egy dir" akkor nem muxik... mit kellene maskepp csinalnom?
Koszonom a segitseget.

pl.:

list=$(find $SEARCHDIR -name "*[HH]*.doc" -print)
for f in $list
do

helyett:

find $SEARCHDIR -name "*[HH]*.doc" -print | while read f do

Ugyanis a for f in $list használata esetén az f-be a $list-ből a whitespace által határolt szavak kerülnek az iterációk során.
(De egy IFS="\n" sor is ugyanugy jo lenne a for elott, de a masikat en pl. jobban szeretem:) )

Nezegetem a scriptet ami most igy nez ki

#!/bin/sh
SEARCHDIR="$1"
DESTDIR="$2"

find $SEARCHDIR -name "*[TVH]*" -exec echo '{}' \; | while read LINE
do
f="$LINE"
d=$(dirname "$f")
ff=$(echo "$f" | awk -F"$d" '{ print $2}')
mydir=$(echo $ff | cut -b1-5)
mkdir $DESTDIR/$mydir
cp "$f" "$DESTDIR/${mydir}${ff}"
done

az vele a gondom, hogy nem csak azokat a fileokat masolja at amiben a TVH szerepel hanem pl. ha csak T vagy akar V vagy H van azokat is...
Mit csinaltam rosszul?
Koszi a segitseget