Sida 1 av 1

farligt kommando - locate+rm

Postat: 11 apr 2007, 15:39
av johan_pirate
Tjena!

Jag undrar om det finns något kommando som raderar alla sökresultat den hittar typ?

locate vmware | rm vmwa*

hoppas ni fattar. ;D

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 15:53
av Konservburk
OBS! Det här är "farligt"...

Kod: Markera allt

locate vmware | xargs rm -rf

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 16:03
av mcNisse
DrKonservburk skrev: OBS! Det här är "farligt"...

Kod: Markera allt

locate vmware | xargs rm -rf
,,, och det är dessutom troligt att du måste lägga till ett sudo innan rm vilket gör det hela ännu farligare.

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 16:46
av johan_pirate
Najsigt! de funka :)

Kod: Markera allt

locate vmware | sudo xargs rm -rf

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 17:01
av DeepThought
Kanske kan man köra rm med flaggan -i (interactive, d.v.s. du får "svara ja" på alla filer först - trycka y och Enter) om man är lite osäker? Borde väl bli:

Kod: Markera allt

locate vmware | sudo xargs rm -irf
Funkar om man inte har på tok för många filer, då kan det bli jobbigt ;)

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 17:08
av johan_pirate
DeepThought skrev: Kanske kan man köra rm med flaggan -i (interactive, d.v.s. du får "svara ja" på alla filer först - trycka y och Enter) om man är lite osäker? Borde väl bli:

Kod: Markera allt

locate vmware | sudo xargs rm -irf
Funkar om man inte har på tok för många filer, då kan det bli jobbigt ;)
Tack för tipset ;D

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 17:20
av zero gravity
johan_pirate skrev: Najsigt! de funka :)

Kod: Markera allt

locate vmware | sudo xargs rm -rf
Toker!! :P

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 17:24
av johan_pirate
zero gravity skrev:
johan_pirate skrev: Najsigt! de funka :)

Kod: Markera allt

locate vmware | sudo xargs rm -rf
Toker!! :P
muahaha xD

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 20:59
av Okänd
borde inte sudo rm -rf `locate wmvare` fungera lika bra? kanske bäst att testa med echo `locate wmvare` först ;)

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 21:15
av mcNisse
Den här varianten fungar oxå. Men den tar bara bort den första som hittas i $PATH.

sudo rm -rf $(which wmvare)

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 21:16
av Lars
gasol skrev: borde inte sudo rm -rf `locate wmvare` fungera lika bra? kanske bäst att testa med echo `locate wmvare` först ;)
Problemet är att längden på kommandoraden är begränsad, `locate vmware` kan bli väldigt lång och då ryms inte alla filnamn. När man kör xargs så delas det upp i flera anrop av rm om det behövs.

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 21:29
av mcNisse
Jag har varit med om att det har blivit så många argument till xargs så att det bara hälften av kommandorna blev gjorda :( (på en HPUX kärra) Dessutom finns problemen med mellanslag i namn.

Meningslösa exempel för att komma runt problemet...

iterativt:
find . | xargs -i echo "{}"

eller för att ta 10 åt gången:
find . | xargs -L 10 echo

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 22:47
av Mekaniserad Apelsin
mcNisse skrev: find . | xargs -i echo "{}"
du har börjat närma dig något intressant... find (plats att börja söka på) [argument] är ytterst användbart för sånt här. Till exempel tar
find . -type d -empty -delete
och slänger alla tomma kataloger (rekursivt) från positionen där man är.

find . -iname filattslänga -delete
slänger alla filer som heter filattslänga (rekursivt) och
find . -iname filatt* -delete
slänger filerna filattslänga och filattspara (dvs alla filer som börjar på filatt), givetvis oxå rekursivt.

iname står för att find inte ska bry sig om filen har rätt stora bokstäver (FilaTTsläNga och FILATTSLÄNGA slängs oxå.)

find . iname dumfil -delete
slänger inte DUMfil och DumFil eftersom -name används istället.

För mer skriv man find i en terminal!
Det intressanta är givetvis att -iname fil\ att\ slänga slänger filen "Fil att slänga", dvs den accepterar alla typer av tecken i filnamnet osv.

SV: farligt kommando - locate+rm

Postat: 11 apr 2007, 23:06
av mcNisse
Mycket intressant. Är det gnus utökningar av find som du beskriver? Jag hittade inget i man sidan på en HPUX burk. Det visar ju hur använbara gnus verktyg är :)
find . -iname filatt* -delete
slänger filerna filattslänga och filattspara (dvs alla filer som börjar på filatt), givetvis oxå rekursivt.
Ger detta fel på min burk. "find: paths must precede expression" Men det är bara att fnutta wilcard uttrycket filatt*. Jag trodde att ett helt annat fel skulle kunna uppstå :)

SV: farligt kommando - locate+rm

Postat: 12 apr 2007, 09:38
av johan_pirate
mcNisse skrev: Det visar ju hur använbara gnus verktyg är :)
släng dig i väggen microsoft! ;D

SV: farligt kommando - locate+rm

Postat: 12 apr 2007, 10:09
av Mekaniserad Apelsin
mcNisse skrev: Mycket intressant. Är det gnus utökningar av find som du beskriver? Jag hittade inget i man sidan på en HPUX burk. Det visar ju hur använbara gnus verktyg är :)

Ger detta fel på min burk. "find: paths must precede expression" Men det är bara att fnutta wilcard uttrycket filatt*. Jag trodde att ett helt annat fel skulle kunna uppstå :)
Jag har försökt att beskriva hur find har fungerat sen åtminstone dapper... Och enda sättet jag lyckas återskapa det fel du beskriver är om jag sätter path (det är punkten dvs var man ska börja söka någonstans (.=nuvarande position)), efter expression (-iname filatt*), precis som felmeddelandet säger... Är du säker på att du skrev kommandot exakt som beskrevs?

SV: farligt kommando - locate+rm

Postat: 12 apr 2007, 11:55
av Konservburk
MekaniseradApelsin skrev:Är du säker på att du skrev kommandot exakt som beskrevs?
Ja, han skrev kommandot exakt som du beskrev. Skillnaden är
att han hade filer som matchade filatt* i katalogen han stod i,
men det hade inte du. Prova detta så får du se vad jag menar...

Kod: Markera allt

touch filattslänga filattspara
find . -iname filatt* -delete
Glöm aldrig att escapa alla * när du inte vill att kommandoskalet
ska föröka expandera dem.