Avatar billede nicklasb Nybegynder
06. oktober 2008 - 10:40 Der er 3 kommentarer og
1 løsning

Slet filer ud fra regler

Jeg har en mappe/fil -struktur, hvor jeg ønsker at slette bestemte filer, ud fra nogle grundlæggende regler.

Mappe/fil -strukturen er som følger:

En rod-mappe, fx /common/pictures03/.

Under rod-mappen, ligger en række undermapper, fx 001, 002, kaa, fte.

I hver af disse mapper, ligger nu en vilkårlig dyb mappestruktur. Et eksempel på hele strukturen er som følger:

/common/
    pictures02/
        ...
    pictures03/
        001/
            path/
                to/
                    files/
                        ****
        002/
            path/
                to/
                    files/
                        ****
        003/       
            ...
    pictures04/
        ...

(jeg  håber den viser sturkturen korrekt. Ovenfor er fx skitseret mappen: /common/pictures03/001/path/to/files/****. Håber det er til at forstå?)

Markeret med stjerner, er en række filer. Filernes navne er givet efter følgende regler:

Filnavnet starter med en 32 karakteres md5-sum.
Den resterende del af filnavnet er kendt.
    - undtaget af endelsen.

Under en vilkårlig files/ kan filerne listet se ud som følger:

bc687465b13ff1c1019f7da7aa7dd7ff-filename1.ext1
325472601571f31e1bf00674c368d335-filename1.ext2
23424b2342ac343b544ff23c23ab4341-filename2.ext3

Jeg vil nu gerne have en kommando, der begrænses til at køre på en enkelt, specificeret mappe under common/.
Kommandoen skal givet en path/to/files/ kunne løbe igennem alle undermapper til fx /common/pictures03.
I alle disse mapper skal alle filer, bestående af en 32 karakters sum, efterfulgt af en bindestreg, efterfuldt af et som argument givet filnavn, efterfulgt af en vilkårlig fil-endelse slettes.

Jeg forstiller mig at kunne give fx:
1. /common/pictures03/
2. path/to/files/
3. filename1

Da vil jeg forvente at alle forekomster, i den i 2. givet undermappe til den i 1. givet mappe, af filer med navnet xxxx-[3.].ext slettes.
I eksemplet ovenfor, vil det være de to første filer, der bliver slettet, inklusiv eventuelt lignende filer, under de øvrige undermapper til /common/pictures03/
Avatar billede skau Nybegynder
11. oktober 2008 - 17:19 #1
hmmm hvad med:
find /common/path/to/files -type f -name "*-ditfilnavnfraargument.*" -exec rm -f {} \;
Avatar billede nicklasb Nybegynder
11. oktober 2008 - 17:46 #2
Tak - jeg vil give det et forsøg! :)
Er det

find /common/*/path/to/files -type f -name "*-ditfilnavnfraargument.*" -exec rm -f {} \;

hvis jeg gerne vil have den til at lede i flere undermapper til common? (jeg har tikføjet en stjerne efter /common/)
Avatar billede skau Nybegynder
13. oktober 2008 - 18:49 #3
Hvis det er alle mapper under common kan du bare skrive
find /common -type f -name "*-ditfilnavnfraargument.*" -exec rm -f {} \;
Avatar billede skau Nybegynder
13. oktober 2008 - 18:49 #4
hvis du skriver linien uden -exec rm -f {} \; vil den bare liste filerne uden at slette dem
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester