Newsgroup: it.comp.os.linux.sys
Titolo: xargs

ll *jpg | grep 2004-12-26 | colrm 1 52 | xargs -i mv {} natale04/
c'è un modo migliore per farlo?
ciao, andrea
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 c'è un modo migliore per farlo?
Con un uso adeguato di find, rimuovi i primi tre pipe.
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
make it idiot-proof and someone will make a better idiot.

 c'è un modo migliore per farlo?
il avrei usato
awk '{ print $NF }'
al posto di colrm perchè avrei risparmiato di contare i caratteri :)
ciao
--
Ranger

 Con un uso adeguato di find, rimuovi i primi tre pipe.
avevo pensato anch'io a find, ma a me interessano le foto di una certa
data, mentre con find si possono specificare i vari atime, ctime...non
mi pare che si possano trovare file creati in una certa data, o no? :-)
ciao!


 mi pare che si possano trovare file creati in una certa data, o no? :-)
Visto che suppongo che quel grep agisce sul nome del file, puoi cercare
il nome del file, tipo:
find . -name "*2004-12-26*.jpg"
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Sorry but I'm busy spending a year dead for tax reasons. -- RAEU

 find . -name "*2004-12-26*.jpg"
Stavo iniziando a scrivere un post con questo contenuto:
$ ls -1 *.jpg |xargs -i mv {} natale04/
$ find -iname \*2004-12-26*\.jpg -maxdepth 1 -exec mv {} natale04/ \;
$ mv *2004-12-26*.jpg natale04/ 
Notare l'ultimo esempio: di una furbizia rara :-) Poi mi sono accorto 
che il suo grep non fa match sul nome file, ma sulle date dell'output
di ls -l.
Fabio

 di ls -l.
Visto che il formato di ls -l e`
permessi inode user group dim Mese numgiorno ora/anno nomefile
Tenderei ad escluderlo.
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
A seven day honeymoon makes one weak.

 Tenderei ad escluderlo.
Invece io non lo escluderei affatto ;-)
# ls -l /tmp
totale 28
drwx------  3 fabio  fabio  4096 2004-12-28 17:12 gconfd-fabio
drwx------  2 root   root   4096 2004-12-24 11:33 gconfd-root
drwx------  2 fabio  fabio  4096 2004-12-20 12:07 kde-fabio
drwx------  2 fabio  fabio  4096 2004-12-20 12:12 ksocket-fabio
drwx------  2 fabio  fabio  4096 2004-12-28 17:30 orbit-fabio
drwx------  2 root   root   4096 2004-12-24 11:33 orbit-root
-rw-rw-rw-  1 zabbix zabbix  848 2004-12-28 13:49 zabbix_agentd.tmp
# ls --version
ls (coreutils) 5.2.1
Fabio ls(1) locale(1)

 Tenderei ad escluderlo.
Scusate forse ho sbagliato a non esporre il problema:
ho una serie di file jpg del tipo dscn0075.jpg (quindi nessuna
informazione sulla data) in una dir con altri file jpg: voglio spostare
quelli di una certa data (ecco perchè faccio ls -l) in una certa
directory.
per identificare i file di una certa data non ho trovato niente di
meglio che greppare su ls -l e poi tagliare da std output le colonne non
desiderate, in modo da far rimanere solo il nome del file da dare poi in
pasto a xargs.
mi sembra un metodo migliorabile e siccome non sono un mostro con la
shell....cercavo suggerimenti!
cmq grazie a tutti, ciao
andrea


 drwx------  3 fabio  fabio  4096 2004-12-28 17:12 gconfd-fabio
Oh bella.
mizio@hal:~$ ls -l /tmp/
total 16
drwx------  3 mizio mizio 4096 Dec 29 14:16 gconfd-mizio
Che "locale"?
;)
A maggior ragione, in questo caso, find, mi sembra una buona soluzione
visto che puo` cercare per nome _e_ per (a|c|m)time.
/me posix, C, o al massimo en_US. ;)
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Did you know that "Gullible" is not in the dictionary?

 visto che puo` cercare per nome _e_ per (a|c|m)time.
x quanto ne so io con "find" puoi ragionare solo per intervalli di 
tempo, infatti le opzioni -atime -ctime si riferiscono a "n ore fa" e 
non un orario preciso
Ciao
--
Ranger

 non un orario preciso
..infatti, per i motivi che spieghi sopra ho scartato pure io
find...Maurizio illuminaci! :-)


 find...Maurizio illuminaci! :-)
i vari time, in find, funzionano per N con N = N*24 (ore fa).
N, accetta: +N (maggiore di) -N (minore di) o N (esattamente).
Appurato questo, trovare una data, significa solo fare la differenza di
giornate e impostarlo come N. Ovvero, i file del 26 dicembre:
find . -name "*.jpg" -mtime 3 (se lo scrivo oggi, 29 dic).
Es, i file del 17 Luglio:
mizio@hal:~/photo$ find . -name "*.jpg" -mtime 165 | xargs ls -l
-rw-r--r--  1 mizio mizio 1156085 Jul 17 13:14 ./12-imag0001.jpg
-rw-r--r--  1 mizio mizio  943378 Jul 17 13:14 ./12-imag0002.jpg
-rw-r--r--  1 mizio mizio  986389 Jul 17 13:14 ./12-imag0003.jpg
-rw-r--r--  1 mizio mizio 1006892 Jul 17 13:14 ./12-imag0004.jpg
-rw-r--r--  1 mizio mizio 1018718 Jul 17 13:14 ./12-imag0005.jpg
-rw-r--r--  1 mizio mizio  973577 Jul 17 13:14 ./12-imag0006.jpg
E ovviamente, non ho barato visto che:
mizio@hal:~/photo$ ls -1 | wc -l
194
Saluti.
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
HELO. My $name is 
sendmail.cf
. Prepare to vi.

 shell....cercavo suggerimenti!
Prova: date -r dsc1234.jpg +%Y%m%d%H%M
-- 
Post prandium stabis, post coenam ambulabis.
RRB

 N, accetta: +N (maggiore di) -N (minore di) o N (esattamente).
l'unico neo è che per file vecchi può non essere immediato calcolare il
num di giorni trascorsi...o c'è unìopzione di cal che fa anche questo??
:-))
cmq, grazie ancora e buone feste
ciao


 Prova: date -r dsc1234.jpg +%Y%m%d%H%M
mittico, thx


 mittico, thx
hehehe...lo faccio anche io per catalogare le foto fatte con la digicam...


 num di giorni trascorsi...o c'è unìopzione di cal che fa anche questo??
Non proprio, ma uno scriptino di comodo, versione in bash:
#!/bin/bash
# constant
SDATE=`date +%s`
KSEC=$[3600*24]
RDATE=$BASH_ARGV
TDATE=`date -d "$RDATE" +%s`
DIFFDATE=$[$SDATE-$TDATE]
DIFFDAY=$[$DIFFDATE/$KSEC]
echo "$DIFFDAY"
accetta un input "USA style", ovvero mese/giorno/anno, es:
mizio@hal:~/bin$ date
Thu Jan  6 14:28:53 CET 2005
mizio@hal:~/bin$ cd
mizio@hal:~$ daycount.sh 01/01/2005
5
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
There are two major products that come out of Berkeley: LSD and UNIX.