sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #102779
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