meerdere bestanden uit diverse home folders verwijderen

Pagina: 1
Acties:

  • --HYPER--392
  • Registratie: Maart 2001
  • Laatst online: 20:32

--HYPER--392

Powered by Fiat

Topicstarter
Ik hoop dat jullie me kunnen helpen,want ik zit even vast

Ik heb een centos 4.4 server met diverse home mappen erop vb:

/home/gebruiker1
/home/gebruiker2
/home/gebruiker3
/home/gebruiker4
enz

In alle mappen van diverse gebruikers zitten bestanden met een extensie die ik wil verwijderen (exe,cmd en bat) nu kan ik deze met de hand gaan verwijderen maar dat moet veel makkelijker kunnen door middel van een for loop dacht ik.Wat ik reeds geprobeerd heb:

dmv in de home folder te doen: find | egrep '(exe|cmd|vat)' >>bestand.txt een bestand maken met alle files die ik verwijderd wil hebben,daarna een for loop geprobeerd. for line in $ 'cat bestand.txt' do rm -Rf maar deze regel voert niks uit.Ik hoop dat jullie me de juiste richting in kunnen helpen.

Wat wel belangrijk is dat alleen de bestanden met de opgeven extensie verwijderd worden

Do not pray for easy lives. Pray to be stronger men.


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 27-01 18:27

Kees

Serveradmin / BOFH / DoC
find -iname '*exe' -exec rm {} \;

en de inhoud van jouw bestand zou ik zou 'verwijderen' rm `cat bestand.txt` (backticks, naast de 1 op je keyboard)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Verwijderd

Hiermee pak je alles in 1 keer:

cd /home ; find . -type f \( -name "*.bat" -o -name "*.cmd" -o -name "*.exe" \) -exec rm {} \;

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 07:18
Lekker efficient... tegenwoordig heeft find ook de -delete optie :P

  • cherwin
  • Registratie: Maart 2006
  • Niet online
Verwijderd schreef op zondag 28 juni 2009 @ 14:09:
Hiermee pak je alles in 1 keer:

cd /home ; find . -type f \( -name "*.bat" -o -name "*.cmd" -o -name "*.exe" \) -exec rm {} \;
Vanwaar die haakjes eigenlijk? Zo lijkt het me wat beter (met de tip van _JGC_).
code:
1
find /home -type f \(-name "*.bat" -o -name "*.cmd" -o name "*.exe"\) -delete


Kijk wel eerst of deze commando regel wel het gewenste resultaat heeft alvorens je met "-delete" aan de slag gaat.

[ Voor 13% gewijzigd door cherwin op 28-06-2009 21:09 ]

Tell me your problem, not the solution you think I should build for you.


Verwijderd

Die haakjes zijn grouping operators, google er maar eens op zou ik zo zeggen :)

  • cherwin
  • Registratie: Maart 2006
  • Niet online
Ik zie het nu, zonder die haakjes zegt mijn find commando dat hij alleen naar bestanden moet zoeken die eindigen met de extensie .bat of naar alle bestanden en directories die eindigen met .cmd of .exe.

Ik zal mijn post even aanpassen.

Tell me your problem, not the solution you think I should build for you.


Verwijderd

--HYPER--392 schreef op zondag 28 juni 2009 @ 13:40:
Ik hoop dat jullie me kunnen helpen,want ik zit even vast

Ik heb een centos 4.4 server met diverse home mappen erop vb:

/home/gebruiker1
/home/gebruiker2
/home/gebruiker3
/home/gebruiker4
enz

In alle mappen van diverse gebruikers zitten bestanden met een extensie die ik wil verwijderen (exe,cmd en bat) nu kan ik deze met de hand gaan verwijderen maar dat moet veel makkelijker kunnen door middel van een for loop dacht ik.Wat ik reeds geprobeerd heb:

dmv in de home folder te doen: find | egrep '(exe|cmd|vat)' >>bestand.txt een bestand maken met alle files die ik verwijderd wil hebben,daarna een for loop geprobeerd. for line in $ 'cat bestand.txt' do rm -Rf maar deze regel voert niks uit.Ik hoop dat jullie me de juiste richting in kunnen helpen.

Wat wel belangrijk is dat alleen de bestanden met de opgeven extensie verwijderd worden
Om in dezelfde sfeer te doen van je bestand (hoewel de oplossingen boven mij veel efficienter zijn dan het catten van een bestand en vandaar uit een bestand te verwijderen) even een kleine oplossing op je miniscript

code:
1
2
3
4
5
6
7
#!/bin/ksh

bestand=[u]locatie bestand[/u]

for i in `cat $bestand` do 
      rm -rf $i; echo "$i is verwijderd\n"
done


maar dan moeten er wel volle paden in het bestand staan met daarin de bestanden erin.

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 07:18
Waarom een echo als rm ook een -v flag heeft? :P

Verwijderd

_JGC_ schreef op maandag 29 juni 2009 @ 10:14:
Waarom een echo als rm ook een -v flag heeft? :P
:/

  • maxjuh
  • Registratie: November 2004
  • Laatst online: 19-03-2025
Verwijderd schreef op maandag 29 juni 2009 @ 10:09:
[...]

Om in dezelfde sfeer te doen van je bestand (hoewel de oplossingen boven mij veel efficienter zijn dan het catten van een bestand en vandaar uit een bestand te verwijderen) even een kleine oplossing op je miniscript

code:
1
2
3
4
5
6
7
#!/bin/ksh

bestand=[u]locatie bestand[/u]

for i in `cat $bestand` do 
      rm -rf $i; echo "$i is verwijderd\n"
done


maar dan moeten er wel volle paden in het bestand staan met daarin de bestanden erin.
Bovenstaande oplossingen zijn inderdaad mooier, maar dit kan ook nog wel beter.
code:
1
2
3
4
5
#!/bin/bash

while read f; do
     rm -fv $f
done < locatie bestand

  • warp
  • Registratie: Januari 2000
  • Niet online
_JGC_ schreef op zondag 28 juni 2009 @ 16:16:
Lekker efficient... tegenwoordig heeft find ook de -delete optie :P
_JGC_ schreef op maandag 29 juni 2009 @ 10:14:
Waarom een echo als rm ook een -v flag heeft? :P
Als je scripts platformonafhankelijk wilt houden, dan is het wel zo slim om geen Centos/Linux specifieke parameters te gebruiken. Write once, use on any. Dàt is efficiëntie. :P

  • cherwin
  • Registratie: Maart 2006
  • Niet online
maxjuh schreef op maandag 29 juni 2009 @ 11:26:
[...]

Bovenstaande oplossingen zijn inderdaad mooier, maar dit kan ook nog wel beter.
code:
1
2
3
4
5
#!/bin/bash

while read f; do
     rm -fv $f
done < locatie bestand
Je vergeet quotes te gebruiken. Deze script zal stiekem bestanden met spaties negeren. Vanuit de manual page.
OPTIONS
Remove (unlink) the FILE(s).

-f, --force
ignore nonexistent files, never prompt
cherwin@xenocrates:test$ touch "Bestand met spaties"
cherwin@xenocrates:test$ f="Bestand met spaties"
cherwin@xenocrates:test$ rm -fv $f
cherwin@xenocrates:test$ ls
Bestand met spaties
cherwin@xenocrates:test$ rm -fv "$f"
removed `Bestand met spaties'
cherwin@xenocrates:test$ ls
cherwin@xenocrates:test$ 

Tell me your problem, not the solution you think I should build for you.


  • maxjuh
  • Registratie: November 2004
  • Laatst online: 19-03-2025
achjah foutje. Moeten inderdaad quotes omheen. Daar moet je sowieso goed mee opletten bij Bash scripting
Pagina: 1