Portál AbcLinuxu, 13. května 2024 13:33


Dotaz: auto prejemovani: neco_datum

8.3.2008 17:13 vaip
auto prejemovani: neco_datum
Přečteno: 353×
Odpovědět | Admin
Ahoj, jak bych mohl automaticky prejmenovat soubor neco.txt na neco_ddmmrr.txt ?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.3.2008 17:52 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
Odpovědět | | Sbalit | Link | Blokovat | Admin

Co myslíte tím automaticky? (Pokud chcete aktuální datum, tak je tu příkaz date, na přejmenování pak mv).

I am always ready to learn although I do not always like to be taught. (W. Churchill)
8.3.2008 17:59 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
Odpovědět | | Sbalit | Link | Blokovat | Admin
Přibližně takhle nějak (pokud ddmmrr má být datum poslední změny souboru):
f="neco.txt"
mv $f `ls -l --full-time $f | awk '{ print gensub("(.*)\\.[^.]+", "\\1", 1, $9) "_" substr($6,9,2) substr($6,6,2) substr($6,3,2) "." gensub(".*\\.([^.]+)", "\\1", 1, $9) }'`
Ale řekl bych, že awk mi tam bere jeden prázdný řádek navíc, takže to ještě bude chtít doladit…
8.3.2008 18:05 vaip
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
Odpovědět | | Sbalit | Link | Blokovat | Admin
udelal jsem mv *.txt neco_$(date +%d%m%Y).txt , ale to neni presne to, co potrebuju. To neco je promenlivy, tak potrebuju, aby to nejak bral z puvodniho nazvu souboru...
8.3.2008 18:13 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
d=`date +%d%m%Y`
for f in *.txt ;  do
  mv $f `echo $f $d | awk 'print gensub("(.*)\\.[^.]+", "\\1", 1, $1) "_" $2 "." gensub(".*\\.([^.]+)", "\\1", 1, $1) '`
done
8.3.2008 19:27 yy
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
To vypada strasidelne. Nestacilo by nasledujici?
for f in *.txt; do
  mv -i "$f" "${f%.txt}_$(date +%d%m%y).txt"
done
8.3.2008 19:34 vaip
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
tohle je super! diky vsem
8.3.2008 20:26 vaip
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
da se tohle nejak vylepsit, v pripade, ze vstupni soubor bude mit stejny nazev? Aby vysledek byl treba neco_ddmmrr_02.txt ?
8.3.2008 22:51 yy
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
Udelat se to da, ale otazka je, jestli se kvuli prejmenovani nekolika souboru vyplati psat skript s podminkami a testy. V praxi obvykle staci pridat cas (misto +%d%m%y pouzit +%d%m%y_%H%M%S).
Dalibor Smolík avatar 9.3.2008 00:00 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
Myslím, že se to vyplatí. Často používám skripty, které ukládají určité soubory a při jejich opakování se výsledný soubor přepíše, což je nežádoucí. (Typicky skenování několika obrázků za sebou). Tohle by mohlo být užitečné, díky za tip.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
9.3.2008 12:37 vaip
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
tohle me taky napadlo, ale prijde mi to neprehledny... Jde o to, ze mi mailem chodi denne nekolik souboru se stejnym nazvem. Ja je automaticky ukladam. Na archivaci je jednodussi, aby za datumem bylo poradove cislo, nez aktualni cas... myslel jsem, ze to je jednoduchy a nebude to zadnej problem...
9.3.2008 16:01 123
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
Problem to samozrejme je, protoze misto 3 trivialnich radku se z toho stane skript s 22 radky, ktery se navic musi prizpusobit danemu ucelu.
#!/bin/bash

function print_new_name () {
    # Input: file.txt
    # Output: file_090308_01.txt
    date=$(date +%d%m%y)
    i=1
    while :; do
	printf -v name "%s_%s_%02d.txt" "${1%.txt}" $date $i
	if [ ! -e "$name" ]; then break; fi
	let i=i+1
    done
    echo "$name"
}

for f in *.txt; do
    # skip names with suffixes like _090308_01.txt
    if [ "${f%_[0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9].txt}" == "$f" ]; then
	name=$(print_new_name "$f")
	mv "$f" "$name"
    fi
done
9.3.2008 17:08 vaip
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
vypada to zajimave:) otestuju a dam vedet..dik
9.3.2008 20:04 vaip
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
Udelal jsem par drobnych uprav (prizpusobeni) a funguje to bezvadne.. Diky!
8.3.2008 21:39 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: auto prejemovani: neco_datum
Stačilo. Vždycky na tenhle typ expanze proměnných zapomenu :-(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.