← Back to team overview

sslug-teknik team mailing list archive

Re: Sletning af filer ud fra liste

 

Den 23. jun. 2013 19.46 skrev Jens Bang <mailinglists@xxxxxxx>:

> On 23/06/13 11:28, Thue Janus Kristensen wrote:
>
>> Hvis din fil indeholder regexps så som
>>
>> ^filnavn$
>>
>
> Der er ingen regexps i filen. Der er ét filnavn pr. linie, så hver linie
> svarer til én fil der ikke skal slettes.
>
> Filnavnene kan se sådan ud som nedenstående:
> 20130622_165534_00.jpg
>

Et filnavn uden specieltegn er jo bare et specieltilfælde af et regexp. Så


> 20130622_165534_01.cr2


er et regexp som kun matcher strengen "20130622_165534_01.cr2"! (plus
strenge som indeholder den delstreng, derfor indsættelse af ^ og $ nedenfor)


>
>  så kan du gøre følgende
>>
>> ls --color=never|grep -v -f patterns |xargs --delimiter "\n" rm
>>
>
> Ville
> ls --color=never -A1 | grep -v -f patterns |xargs --delimiter "\n" rm
> ikke være bedre? Det vil begrænse sig til ét navn pr linie, som input til
> resten. Umiddelbart ville jeg tro at ovenstående ville slette alle filer på
> én linie (i output fra ls), bare ét af dem ikke matcher noget i filen.
> Tager jeg fejl i det?
>

Hvis du gør

  ls | less

så kan du se at ls automatisk laver en fil per linje. Jeg gætter på at ls
kan se at det er en pipe den sender output til. Så -1 er ikke nødvendig.
Min ls inkluderer ikke . og .., men hvis din gør, så har selvfølgelig brug
for -A .


>
> Jeg går ud fra at 'patterns' er navnet på den fil der indeholder de
> filnavne der ikke skal slettes. Er det korrekt?


Ja.


>
>  Så hvis dine filer bare indeholde[a-zA-Z_0-9.], så kan du bare sætter ^$
>> ind i filen (med sed eller en emacs-makro fx), så bør det virke.
>>
>
> Sætte ^$ ind i filen hvor?
>

^ i starten af hvert filnavn, $ i slutningen.


>
> Det er noget der på sigt helst skal kunne automatiseres, så jo mindre
> filen med filnavnene skal ændres, jo bedre.
>
>
>  Bemærk at med grep's regexps-syntax, så er "." bare ".", mens "\." er en
>> vilkårlig karakter.
>>
>
> Tak for tippet, men jeg skal i dette tilfælde ikke bruge regexps. :-)


Hilsen Thue

Follow ups

References