The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Ik ken de handleiding van find.Kees schreef op zondag 08 juli 2012 @ 15:44:
code:
1 man find
Eventueel aangevult met een of meerdere for loops om dagen te selecteren.
Het zijn juist te loops waarop ik stuk loop.
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Commandline FTW | Tweakt met mate
root@mailsrv01:~/test# ls --full-time * -rw-r--r-- 1 root root 0 2012-07-08 08:22:14.000000000 +0200 test1 -rw-r--r-- 1 root root 0 2012-07-08 09:22:14.000000000 +0200 test2 -rw-r--r-- 1 root root 0 2012-07-08 17:22:14.000000000 +0200 test3 -rw-r--r-- 1 root root 0 2012-07-08 18:22:14.000000000 +0200 test4 -rw-r--r-- 1 root root 0 2012-07-08 17:44:14.000000000 +0200 test5 root@mailsrv01:~/test# find . -type f -print0 | xargs -0 stat -c "%y %n" | awk '/^[^\s]+ (09:|1[0123456]:|17:[12]|17:30)/ { print $4 }' ./test2 ./test3
[ Voor 3% gewijzigd door CyBeR op 08-07-2012 16:29 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
Juist. Hier kan ik iets mee. Ik was zelf al hier mee bezig maar wil nog niet helemaal lukken:CyBeR schreef op zondag 08 juli 2012 @ 16:27:
root@mailsrv01:~/test# ls --full-time * -rw-r--r-- 1 root root 0 2012-07-08 08:22:14.000000000 +0200 test1 -rw-r--r-- 1 root root 0 2012-07-08 09:22:14.000000000 +0200 test2 -rw-r--r-- 1 root root 0 2012-07-08 17:22:14.000000000 +0200 test3 -rw-r--r-- 1 root root 0 2012-07-08 18:22:14.000000000 +0200 test4 -rw-r--r-- 1 root root 0 2012-07-08 17:44:14.000000000 +0200 test5 root@mailsrv01:~/test# find . -type f -print0 | xargs -0 stat -c "%y %n" | awk '/^[^\s]+ (09:|1[0123456]:|17:[12]|17:30)/ { print $4 }' ./test2 ./test3
1
| stat -c "%y %n" * | awk -F"[ :]" '$2>=9&&$2<17||$2==17&&$3<=30{print $6}' | xargs -i cp {} /somewhere/else |
Maar werkt geloof ik nog niet helemaal...
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
[ Voor 34% gewijzigd door CyBeR op 08-07-2012 16:34 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
Yes. Bedankt.CyBeR schreef op zondag 08 juli 2012 @ 16:33:
Mijn variant print de filenames, die kun je weer gebruiken om te cp'en of iets anders te doen. (Bijvoorbeeld door er nog een xargs achteraan te pipen, als je geen spaties in de filenames hebt.)
Volgende probleem: -bash: /usr/bin/stat: Argument list too long

The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Daarom heb ik find gebruikt en niet 'stat *'Alpha_Mouse schreef op zondag 08 juli 2012 @ 16:38:
[...]
Yes. Bedankt.
Volgende probleem: -bash: /usr/bin/stat: Argument list too long
All my posts are provided as-is. They come with NO WARRANTY at all.
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
All my posts are provided as-is. They come with NO WARRANTY at all.
wat?
Darwin kernal. wat nu weer...
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
[marco@miranda test]$ ls -lahT total 0 drwxr-xr-x 6 marco wheel 204B Jul 8 17:15:03 2012 . drwxrwxrwt 18 root wheel 612B Jul 8 17:15:03 2012 .. -rw-r--r-- 1 marco wheel 0B Jan 1 18:08:00 2012 test1 -rw-r--r-- 1 marco wheel 0B Jan 1 09:08:00 2012 test2 -rw-r--r-- 1 marco wheel 0B Jan 1 17:08:00 2012 test3 -rw-r--r-- 1 marco wheel 0B Jan 1 18:08:00 2012 test4 [marco@miranda test]$ find . -type f -print0 | xargs -0 stat -f "%Sm %N" -t "%H:%M" | awk '/^(09:|1[0123456]:|17:[012]|17:30)/ { print $2 }' ./test2 ./test3
(Gaat dus wel kapot als er spaties in de filenames zitten.)
[ Voor 61% gewijzigd door CyBeR op 08-07-2012 17:23 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
mmmCyBeR schreef op zondag 08 juli 2012 @ 17:13:
Oh, je zei niet dat je op osx zat. Ik ging van een GNU systeem uit. Dan:
[marco@miranda test]$ ls -lahT total 0 drwxr-xr-x 6 marco wheel 204B Jul 8 17:15:03 2012 . drwxrwxrwt 18 root wheel 612B Jul 8 17:15:03 2012 .. -rw-r--r-- 1 marco wheel 0B Jan 1 18:08:00 2012 test1 -rw-r--r-- 1 marco wheel 0B Jan 1 09:08:00 2012 test2 -rw-r--r-- 1 marco wheel 0B Jan 1 17:08:00 2012 test3 -rw-r--r-- 1 marco wheel 0B Jan 1 18:08:00 2012 test4 [marco@miranda test]$ find . -type f -print0 | xargs -0 stat -f "%Sm %N" -t "%H:%M" | awk '/^(09:|1[0123456]:|17:[012]|17:30)/ { print $2 }' ./test2 ./test3
(Gaat dus wel kapot als er spaties in de filenames zitten.)
Begint er op te lijken! Enig idee hoe ik dit kan beperken tot alleen de huidige dir?
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
find . -maxdepth 1 -type f -print0 | etc
(die had je uit de man page kunnen halen
[ Voor 47% gewijzigd door CyBeR op 08-07-2012 17:43 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
ToesjeeCyBeR schreef op zondag 08 juli 2012 @ 17:43:
find . -maxdepth 1 -type f -print0 | etc
(die had je uit de man page kunnen halen)
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
1
| find . -maxdepth 1 -type f -print0 | xargs -0 stat -f "%Sm %N" -t "%H:%M" | awk '/^(09:|1[0123456]:|17:[012]|17:30)/ { print $2 }' | xargs -I cp /Volumes/Timelapse\ 1/Temp/ |
Geeft als response : Permission denied
Enig idee waaorm?
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
All my posts are provided as-is. They come with NO WARRANTY at all.
Alle files hebben read access... /Volumes/LALA ook...CyBeR schreef op zondag 08 juli 2012 @ 19:15:
Omdat er een file bij is die je niet mag lezen of verplaatsen of je mag niet kopieren, etc.
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Btw, ik heb even een titelfix gedaan, greg is niet goed neem ik aan, maar grep wel.
Commandline FTW | Tweakt met mate
zelfs are root krijg ik permission denied...Hero Of Time schreef op zondag 08 juli 2012 @ 20:51:
Je zou moeten zien wat die permission denied geeft. Tenzij het een commando of parameter/optie is wat je niet mag uitvoeren. Sommige eigenschappen mag niet elke gebruiker opvragen geloof ik. Je kan altijd nog naar root user gaan en hetzelfde uitvoeren, krijg je dan nog steeds permission denied?
Btw, ik heb even een titelfix gedaan, greg is niet goed neem ik aan, maar grep wel.
wat is hier in godsnaam niet goed aan?
find . -maxdepth 1 -type f -print0 | xargs -0 stat -f "%Sm %N" -t "%H:%M" | awk '/^(09:|1[0123456]:|17:[012]|17:30)/ { print $2 }' | xargs -I cp /Volumes/Timelapse\ 1/Temp/
ps.
Thx voor de fix
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
cp /Volumes/Timelapse\ 1/Temp/ file1 file2 file3
Wat natuurlijk niet klopt, want 't staat verkeerdom.
Om dat te regelen kun je het volgende uit de man page van xargs toveren (ja, het staat er allemaal in..)
blaat | xargs -J '{}' cp '{}' /Volumes/blabla
Die -L 100 is om je 'teveel arguments' probleem te omzeilen. De default max is 5000 en dat moet passen.
[ Voor 5% gewijzigd door CyBeR op 08-07-2012 21:36 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
1
| find . -maxdepth 1 -type f -print0 | xargs -0 stat -f "%Sm %N" -t "%H:%M" | awk '/^(09:|1[0123456]:|17:[012]|17:30)/ { print $2 }' | xargs -I'{}' cp {} /Volumes/blabla |
Thx all
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
All my posts are provided as-is. They come with NO WARRANTY at all.
O?CyBeR schreef op zondag 08 juli 2012 @ 21:38:
-I werkt ook, -J is efficienter.
Bak staat 480GB weg te pompen vind het wel mooi zo
Thx again.
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
test1 test2 test3
en je doet -I, krijg je dit:
$ echo -e "test1\ntest2\ntest3" | xargs -I '{}' echo mv '{}' /somewhere mv test1 /somewhere mv test2 /somewhere mv test3 /somewhere
Met -J krijg je:
$ echo -e "test1\ntest2\ntest3" | xargs -J '{}' echo mv '{}' /somewhere mv test1 test2 test3 /somewhere
Dus dat scheelt je een paar duizend keer 'mv' aanroepen, wat relatief langzaam is. Maar bij grote files is de overhead daarvan opeens een stuk minder boeiend.
All my posts are provided as-is. They come with NO WARRANTY at all.
Toch maar even een -p bij gezet anders veranderd ie de time stamp.
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Ik probeer het tijdvalk te verkleinen, echter
[code]
awk '/^(10:|1[0123456]:|15:[012]|15:30)/
[/code]
ipv
[code]
awk '/^(09:|1[0123456]:|17:[012]|17:30)/
[/code]
Levert incorrecte results. Enig idee waaorm?
Never mind. Ik ben er achter. The machine stond in een andere TimeZone en daarom waren de results afwijkend met 1 uur.

---
of toch niet...
1
| awk '/^(10:|1[0123456]:|13:[012]|13:00)/ |
Geeft nog steeds returns tot 15:59:59....
[ Voor 36% gewijzigd door Alpha_Mouse op 09-07-2012 09:32 ]
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Commandline FTW | Tweakt met mate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #!/usr/bin/perl -wl use strict; use File::Copy qw(move); use File::stat; my $globpat = "*.jpg"; my $destdir = "/Volumes/blabla"; my ($start, $end) = ("0900", "1730"); -d $destdir or mkdir $destdir or die "cannot mkdir $destdir: $!\n"; for my $file (glob $globpat) { my $st = stat($file); unless ($st) { warn "cannot stat $file: $!, skip it\n"; next; } my @tm = localtime $st->mtime; my $hm = sprintf "%02d%02d", @tm[2,1]; next if $hm lt $start || $hm gt $end; move($file, $destdir) or warn "cannot move $file to $destdir: $!\n"; } |
Klopt ook. Die regexp matcht het volgende:Alpha_Mouse schreef op maandag 09 juli 2012 @ 08:52:
code:
1 awk '/^(10:|1[0123456]:|13:[012]|13:00)/
Geeft nog steeds returns tot 15:59:59....
10:XX (da's de 10: aan het begin)
10:XX tot en met 16:XX (da's 1[0123456]:, en dus gedeeltelijk dubbelop met de vorige)
13:0X tot en met 13:2X (13:[012], dubbelop met hierboven)
13:00 (weer dubbelop met hierboven).
Je moet bedenken die regular expression matcht op de tijd zoals die geprint wordt. Niet numeriek dus, maar gewoon 'voldoet het aan dit patroon'.
Leuk, maar jouw script is 22 regels terwijl dit in een simpele one-liner kan.sam.vimes schreef op maandag 09 juli 2012 @ 11:21:
Voor zo'n klusje grijp ik meestal naar Perl. Perl gaat wat gemakkelijker om met spaties bevattende filenamen en het opvragen van file-attributen. Als zo'n script uitgebreid wordt, is het ook eenvoudiger aan te passen.
[ Voor 27% gewijzigd door CyBeR op 09-07-2012 14:03 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
suf.. -> awk '/^(10:|1[012345]:|15:[012]|15:00)/CyBeR schreef op maandag 09 juli 2012 @ 14:00:
[...]
Klopt ook. Die regexp matcht het volgende:
10:XX (da's de 10: aan het begin)
10:XX tot en met 16:XX (da's 1\[0123456]:, en dus gedeeltelijk dubbelop met de vorige)
13:0X tot en met 13:2X (13:\[012], dubbelop met hierboven)
13:00 (weer dubbelop met hierboven).
Je moet bedenken die regular expression matcht op de tijd zoals die geprint wordt. Niet numeriek dus, maar gewoon 'voldoet het aan dit patroon'.
[...]
Leuk, maar jouw script is 22 regels terwijl dit in een simpele one-liner kan.
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Denk even na waarom ik in m'n originele regexp al die opties heb ingebakken: je wilde daar van 09:00 tot en met 17:30. Dat heeft implicaties voor het patroon waar je tegen matcht.
09:00 wordt nooit gematcht door iets wat met een 1 begint. Dus: (09:)
10:00 tot en met 17:00 wordt nooit gematcht door 09, dus: (09:|1[01234567]:). De | gebruiken we om te zeggen 'of'. De [] in dit geval om exact één van die cijfers te matchen.
maar, dat matcht ook 17:59, dus die moet weer weg: (09:1[0123456]:)
We willen echter ook 17:00 tot en met 17:30, dus: (09:|1[0123456]:|17:[0123])
Oh, maar nu krijgen we ook 17:39, dus dat weer weg en 17:30 los matchen: (09:|1[0123456]:|17:[012]:|17:30)
Snap je?
[ Voor 101% gewijzigd door CyBeR op 09-07-2012 14:40 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
...CyBeR schreef op maandag 09 juli 2012 @ 14:25:
Je hebt nog steeds een dubbeling op 15:xx waardoor 15:59 ook nog meekomt.
Wat is dan wel correct dan?

Nou hoef ik dit eigenlijk maar 1x te draaien (maar uiteraard wel direct goed). Ik snap die syntax logica en de dubbelingen niet helemaal.
[ Voor 25% gewijzigd door Alpha_Mouse op 09-07-2012 14:28 . Reden: uitleg... ]
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Lichtelijk offtopic: is er een reden om te kopieren i.p.v. te (sim)linken?Alpha_Mouse schreef op zondag 08 juli 2012 @ 21:40:
[...]
Bak staat 480GB weg te pompen vind het wel mooi zo
Hij kopieert ze naar een andere disk. Daar heb je weinig aan symlinks.RemcoDelft schreef op maandag 09 juli 2012 @ 14:29:
[...]
Lichtelijk offtopic: is er een reden om te kopieren i.p.v. te (sim)linken?
All my posts are provided as-is. They come with NO WARRANTY at all.
Ja.RemcoDelft schreef op maandag 09 juli 2012 @ 14:29:
[...]
Lichtelijk offtopic: is er een reden om te kopieren i.p.v. te (sim)linken?
Ik moet verschillende kopieën hebben op verschillende harde schijven die weer apart geëdit worden. Zodra ik klaar ben met dit gaan alle originele bestanden (dus de hele directory) direct offline.
CyBeR schreef op maandag 09 juli 2012 @ 14:31:
[...]
Hij kopieert ze naar een andere disk. Daar heb je weinig aan symlinks.

[ Voor 20% gewijzigd door Alpha_Mouse op 09-07-2012 14:33 ]
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
All my posts are provided as-is. They come with NO WARRANTY at all.
Juist.CyBeR schreef op maandag 09 juli 2012 @ 14:25:
Je hebt nog steeds een dubbeling op 15:xx waardoor 15:59 ook nog meekomt. Idem dubbel op 10:xx maar dat geeft in dit geval niet.
Denk even na waarom ik in m'n originele regexp al die opties heb ingebakken: je wilde daar van 09:00 tot en met 17:30. Dat heeft implicaties voor het patroon waar je tegen matcht.
09:00 wordt nooit gematcht door iets wat met een 1 begint. Dus: (09:)
10:00 tot en met 17:00 wordt nooit gematcht door 09, dus: (09:|1\[01234567]:). De | gebruiken we om te zeggen 'of'.
maar, dat matcht ook 17:59, dus die moet weer weg: (09:1\[0123456]:)
We willen echter ook 17:00 tot en met 17:30, dus: (09:|1\[0123456]:|17:\[0123])
Oh, maar nu krijgen we ook 17:39, dus dat weer weg en 17:30 los matchen: (09:|1\[0123456]:|17:\[012]:|17:30)
Snap je?
Maar nu wil ik van 10:30 tot 15:00
Hoe ziet dat er uit dan?
(09:|1\[012345]:|15:\[012]) ?
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
1
| (10:[345]|1[1234]:|15:00) |
Dat betekent het volgende:
match 10:3, 10:4, 10:5, oftewel: 10:[345]
match 11:, 12:, 13:, of 14:, oftewel: 1[1234]:
match 15:00.
Samen krijg je dan het bovenstaande, met | ertussen.
[ Voor 89% gewijzigd door CyBeR op 09-07-2012 15:23 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
Dat ziet er inderdaad beter uit. Best lastig dus toch nog. Ik ga dit even weg kopiëren.CyBeR schreef op maandag 09 juli 2012 @ 15:16:
code:
1 (10:[345]|1[1234]:|15:00)
Dat betekent het volgende:
match 10:3, 10:4, 10:5, oftewel: 10:[345]
match 11:, 12:, 13:, of 14:, oftewel: 1[1234]:
match 15:00.
Samen krijg je dan het bovenstaande, met | ertussen.
Super bedankt voor de input! Heb er straks nog wel eentje... Script dat de helft van de directory leeg mikt (elke 2e file weg mietert) maar volgens mij is dit al eerder besproken.
[ Voor 17% gewijzigd door Alpha_Mouse op 09-07-2012 15:37 ]
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Commandline FTW | Tweakt met mate
I knowHero Of Time schreef op maandag 09 juli 2012 @ 16:50:
Jep, dat is zeker eerder besproken. Hier of ergens anders op 't web.
The real definition of windows 9x: A number of 32-bit extensions of a 16-bit shell for an 8-bit OS, made for a 4-bit computer by a 2-bit company who can't stand 1-bit of competition.
Helemaal mee eens, maar het ontwikkelen van het Perl-script kostte me minder dan een kwartier, terwijl het in dit topic nu al twee dagen gaat over het vinden van de juiste regexp om te matchen tot 15:30 in plaats van 15:59. In het Perl-script gaat dat in een keer goed. Aanpassen naar andere (begin- en eind-)tijdstippen is triviaal (volgende week veranderen die naar 8:47 en 17:35CyBeR schreef op maandag 09 juli 2012 @ 14:00:
[...]
Leuk, maar jouw script is 22 regels terwijl dit in een simpele one-liner kan.
Ja ho daar, dat heeft me minder dan twee minuten gekost hoor. Het is het educatieve aspect waar 't hier wat langer duurtsam.vimes schreef op dinsdag 10 juli 2012 @ 12:51:
[...]
Helemaal mee eens, maar het ontwikkelen van het Perl-script kostte me minder dan een kwartier, terwijl het in dit topic nu al twee dagen gaat over het vinden van de juiste regexp om te matchen tot 15:30 in plaats van 15:59.
Als ik hier alleen maar het antwoord gaf zonder TS iets te proberen bij te brengen waren we flink sneller klaar geweest.
[ Voor 11% gewijzigd door CyBeR op 10-07-2012 12:56 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
Commandline FTW | Tweakt met mate