Ta bort en viss filändelse i en hel katalogstruktur

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2002

Ta bort en viss filändelse i en hel katalogstruktur

Känner mig en aning dum som startar en ny tråd, men jag har sökt mig fördärvad både på google och här.

Jag har en katalogstruktur i vilken jag vill ta bort alla filer som slutar på ".exe".

Jag har försökt med:
rm -r *.exe
rm -r *.exe*
rm -rf *.exe

men får samma resultat hela tiden:
rm: cannot remove `*.exe': No such file or directory

Jag får det att funka i vissa fall om jag använder en annan bokstavskombination efter * men långt ifrån alla.

Har jag på något fatalt sätt missförstått användningen av wildcards tillsammans med kommandot RM, eller vad är det som är fel?

Trädvy Permalänk
Medlem
Plats
~
Registrerad
Apr 2003

rm är ganska begränsat, men du borde kunna använda kommandot find för att radera filerna.

find -name *.exe -delete

Trädvy Permalänk
Medlem
Plats
Sweden
Registrerad
Apr 2007

Du har inga .exe filer i din cwd uppenbarligen.

Om du har det så bör "\rm *.exe" funka bra. ('\' ifall du har rm aliased till något, som vissa linux distar gör default).

Annars kan du göra som föregående skribent föreslog, alternativt find i kombo med xargs och rm.

E6600 2.4GHz @ 3.2GHz | 4GB 800MHz DDR2 | X1950XTX 512MB @ 695MHz GPU, 2.2GHz mem | WD Raptor | Asus P5B-E | 600W CT600 | FreeBSD & Vista Dual boot
IBM Thinkpad 560X - OpenBSD | Fujitsu Siemens Amilo D - FreeBSD | PSP 4.01-M33 | WRT54GL OpenWRT Kamikaze | iPhone | IMS/SS7 Developer

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2003

Re: Ta bort en viss filändelse i en hel katalogstruktur

Citat:

Ursprungligen inskrivet av Gabrioth
Känner mig en aning dum som startar en ny tråd, men jag har sökt mig fördärvad både på google och här.

Jag har en katalogstruktur i vilken jag vill ta bort alla filer som slutar på ".exe".

Jag har försökt med:
rm -r *.exe
rm -r *.exe*
rm -rf *.exe

men får samma resultat hela tiden:
rm: cannot remove `*.exe': No such file or directory

Jag får det att funka i vissa fall om jag använder en annan bokstavskombination efter * men långt ifrån alla.

Har jag på något fatalt sätt missförstått användningen av wildcards tillsammans med kommandot RM, eller vad är det som är fel?

det asterisken gör är ju endast att matcha i den katalogen du för stunden står i.
så om du står i /katalog/ fast filerna ligger i /katalog/underkatalog/ eller ännu djupare hittar rm självklart inget. find lär funka prima som kabniel sa.

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Maj 2004

En liten hijack av tråden: Om jag, som trådskaparen t.e.x vill ta bort alla *.exe filer, men även mapparna dom ligger i, hur gör man då? Måste man ta till det hårda regexp kungfun?

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jul 2001

Går nog med shellscript också. Lite if match then blaha fi

Swec @ 2001 / Chalmerist - Javisst!
'Den som har flest prylar när han dör vinner!'

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Nov 2004
Citat:

Ursprungligen inskrivet av polygon5
En liten hijack av tråden: Om jag, som trådskaparen t.e.x vill ta bort alla *.exe filer, men även mapparna dom ligger i, hur gör man då? Måste man ta till det hårda regexp kungfun?

find . -name "*.exe" -exec dirname {} \; | xargs rm -rf

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Maj 2004
Citat:

Ursprungligen inskrivet av e5150
find . -name "*.exe" -exec dirname {} \; | xargs rm -rf

Ah, tackar. Kände inte till dirname Tack igen.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2002
Citat:

Ursprungligen inskrivet av kabniel
rm är ganska begränsat, men du borde kunna använda kommandot find för att radera filerna.

find -name *.exe -delete

Såå... om jag kör det i en viss katalog, kommer den då bara ta bort filerna i den katalogen med underkataloger, eller kommer den att söka på hela filsystemet eller ,ve och fasa, hela filstrukturen från / ?

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Nov 2004
Citat:

Ursprungligen inskrivet av Gabrioth
Såå... om jag kör det i en viss katalog, kommer den då bara ta bort filerna i den katalogen med underkataloger, eller kommer den att söka på hela filsystemet eller ,ve och fasa, hela filstrukturen från / ?

Citat:

Ursprungligen inskrivet av [b]man 1 find
If no paths are given, the current directory is used.[/b]

kommandona:
find . -name "*.exe" -delete
find $PWD -name "*.exe" -delete
find -name "*.exe" -delete
kommer allihop att bara söka i nuvarande mapp och dess underkataloger.
innan du kör kommandot så kan det vara lämpligt att göra en:
find -name "*.exe"
alltså utan "-delete", då får du se vilka filer som kommer att tas bort om -delete-växeln är med, så behöver du inte vara orolig.

eller så går det med
rm -i $(find . -name "*.exe")
för att interaktivt få godkänna varje borttagning.