Canon: EOS R6 | EF 16-35/4L IS USM | EF 70-200/2.8L IS II USM
Zeiss: 35/2 Distagon | 50/2 Makro-Planar | 85/1.4 Planar | 100/2 Makro-Planar | 135/2 Apo Sonnar
PW>>NOS
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
ik wil gewoon die files verwijderen die ouder zijn dan 1 dag. DWZ files die niet gemodified zijn. Dus atime. mtime is modified file ongeacht hoe oud de files zijn
-atime n
True if the file was accessed n days ago. The access
time of directories in path is changed by find itself.
-mtime n
True if the file's data was modified n days ago.
EDIT:
Er vanuitgaand dat er elke dag een file gemaakt wordt in mijn directory door een bepaalde applicatie:
optie1:
Als ik de ATIME +1 gebruik dan krijg ik alle files te zien vanaf 28 november en verder terug
Als ik de MTIME +1 gebruik dan krijg ik alle files te zien vanaf 29 november en verder terug.
optie2:
Als ik de ATIME -1 gebruik dan krijg ik alle files te zien vanaf 2 december en verder terug
Als ik de MTIME -1 gebruik dan krijg ik alleen de files van december te zien, beginnend vanaf vandaag, dus van 2 en 1 december....
optie 2 moet ik dus niet hebben, want die zal me alle files tot op de dag van vandaag verwijderen.
[ Voor 82% gewijzigd door Deathchant op 02-12-2005 10:25 ]
Canon: EOS R6 | EF 16-35/4L IS USM | EF 70-200/2.8L IS II USM
Zeiss: 35/2 Distagon | 50/2 Makro-Planar | 85/1.4 Planar | 100/2 Makro-Planar | 135/2 Apo Sonnar
En de * moet je escapen, anders parset de shell hem ipv find.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Je moet find een directory meegeven en geen bestandsnamen. Dus iets alsfind /directorynaam/alarm* -atime +1 -print | xargs rm -f
1
| find /directory -name "alarm*" -atime +1 -print |
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Waarschijnlijk wil je '-mtime' gebruiken, dat is de laatste keer dat het bestand gewijzigd is.
Een ander puntje: je kunt beter de optie '-print0' gebruiken (in plaats van -print) bij find, en dan bij xargs de optie '--null' opgeven. De bestandsnamen worden dan gescheiden door null-characters, het enige teken waarvan je echt 100% zeker weet dat ze niet in een bestandsnaam gaan voorkomen.
N.B. Pas je wel heeeeel goed op met de combinatie van 'find' en 'xargs rm'? Het is precies het soort commando waarmee je met 1 klein foutje je hele systeem goed kunt vernaggelen (vooral als je het test als root terwijl je het commando dus blijkbaar nog niet 100% goed hebt)
[ Voor 16% gewijzigd door Wilke op 02-12-2005 10:47 ]
Dat is waar, maar hij heeft maar 3 bestanden ofzo.Tenzij het om duizenden en duizenden bestanden gaat. Dan is xargs wel noodzakelijk.
Goede tip. Overigens is er nog een character wat nooit in een bestandsnaam kan zitten: /Een ander puntje: je kunt beter de optie '-print0' gebruiken (in plaats van -print) bij find, en dan bij xargs de optie '--null' opgeven. De bestandsnamen worden dan gescheiden door null-characters, het enige teken waarvan je echt 100% zeker weet dat ze niet in een bestandsnaam gaan voorkomen.
dan zou het dus worden
1
| find /directory/ -name "alarm*" -atime +1 -exec rm -f |
1
| find /directory/ -name "alarm*" -atime +1 | xargs rm -f |
In ieder geval wel bedankt voor jullie commentaar.
[ Voor 19% gewijzigd door Deathchant op 02-12-2005 12:03 ]
Canon: EOS R6 | EF 16-35/4L IS USM | EF 70-200/2.8L IS II USM
Zeiss: 35/2 Distagon | 50/2 Makro-Planar | 85/1.4 Planar | 100/2 Makro-Planar | 135/2 Apo Sonnar
neeDeathchant schreef op vrijdag 02 december 2005 @ 12:01:
het gaat zich dus wel om 1000den bestanden. Het gaat zich om 129.768 bestanden dus dat is nogal wat.
dan zou het dus worden
code:
1 find /directory/ -name "alarm*" -atime +1 -exec rm -f
neeOF
code:
1 find /directory/ -name "alarm*" -atime +1 | xargs rm -f
Ten eerste is dat niet de juiste syntax van -exec, en ten tweede, heb je uberhaupt het commentaar in dit topic over atime/mtime van wilke en mij gelezen?
En voor de tweede maal, wel OS gaat het hier over? Verschillende versies van find verwachten namelijk wel eens een andere tijdnotatie (dagen versus uren of minuten bijvoorbeeld).
ten eerste: ja ik heb jullie commentaar gelezen over atime en mtime. Ik heb ook
Het gaat zich hier om Sun dozen, waar ik op moet inloggen met PuTTY.
find . -name "alarm*" -mtime +1 -exec rm {} \;
Canon: EOS R6 | EF 16-35/4L IS USM | EF 70-200/2.8L IS II USM
Zeiss: 35/2 Distagon | 50/2 Makro-Planar | 85/1.4 Planar | 100/2 Makro-Planar | 135/2 Apo Sonnar
De informatie die gevraagd werd en de tips die gegeven werden waren nogal handig om rekening mee te houden voor je met rm gaat scripten
het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun
Als je maar 3 bestanden wil verwijderen dan kan je het commando makkelijk testen door eerst alleen de namen te laten zien voordat je eea verwijderd. Als je heeeeel veel bestanden wil verwijderen en er maar een handjevol overhouden dan werkt dat natuurlijk niet. In dat geval kan je beter de bestanden verplaatsen naar een andere directory.
1
2
| mkdir /hiereerstevenbewaren
find /alarmdirectory -name "alarm*" -mtime +1 -print|xargs -I{} mv {} /hiereerstevenbewaren |
Ik weet niet precies hoe het FS van Sun werkt, maar onder linux ext3 wordt bij het verplaatsen in ieder geval alleen de ctime veranderd.
Die mv werkt natuurlijk ook alleen als de alarm* files in de zelfde directory zitten en er geen hierachische structuur is.
Snelheid.devzero schreef op zaterdag 03 december 2005 @ 03:28:
Ik zie niet in waarom je xargs in dit geval zou gebruiken, als -exec prima werkt.
10000 maal rm aanroepen voor 1 bestand, is veel minder snel dan 10x rm aanroepen voor 1000 bestanden. Bij 10 of 100 bestanden maakt dit niet zoveel uit, maar richting de duizenden scheelt het behoorlijk.
Testje ter illustratie:
1
2
3
4
5
6
7
8
9
10
| % time find . -exec echo {} > /dev/null \;
real 1m43.639s
user 0m26.879s
sys 0m58.771s
% time find . | xargs echo > /dev/null
real 0m0.424s
user 0m0.195s
sys 0m0.187s |
Op een behoorlijk uitgebreide directory-structuur scheelt dat nogal dus
[ Voor 46% gewijzigd door blaataaps op 03-12-2005 11:43 ]
Ik heb het nu inderdaad met -exec rm {} gedaan:
1
| find <directory> -type f -name "alarm" -mtime +1 -print -exec rm{} |
en het werkt perfect. Momenteel gaat het toch om 50 files per week dus. In de toekomst gaan dit (zoals ik al aangaf) richting de 100.000...
Maar ik heb met een collega vandaag zoveel files moeten removen, maar het rm commando werkt niet eens. Volgens mij wordt de buffer gewoon te groot. Doe ik het zo:
1
| find <directory> -name "alarm" -mtime +1 | xargs rm -f |
dan werkt het wel in 1x zonder een melding te krijgen dat het niet kan.
[ Voor 5% gewijzigd door Deathchant op 05-12-2005 12:02 ]
Canon: EOS R6 | EF 16-35/4L IS USM | EF 70-200/2.8L IS II USM
Zeiss: 35/2 Distagon | 50/2 Makro-Planar | 85/1.4 Planar | 100/2 Makro-Planar | 135/2 Apo Sonnar
Neem hier nog wel even een '-type f' in op voor de veiligheid.Deathchant schreef op maandag 05 december 2005 @ 12:00:
code:
1 find <directory> -name "alarm" -mtime +1 | xargs rm -f
dan werkt het wel in 1x zonder een melding te krijgen dat het niet kan.