Alle artikler

Tips: Endre filnavn på mange filer samtidig med find og xargs

I denne lille øvelsen vil vi søke opp alle konfig-filene i en mappe, definert som at de har filendelsen .cfg og gi dem nytt navn ved å legge .gammel til filnavnet.

Her er syntaksen til find med xargs til å endre navnene

$ find </sti/til/mappe/> -name "*.cfg" --print0 | xargs --null -I{} mv {} {}.gammel

Gjennomføring:

1) La oss først lage en mappe og gå inn i den: 

$ mkdir config && cd config

2) Så lager vi noen tomme config-filer og sjekker at de er laget:

$ touch {1..4}.cfg 
$ ls
1.cfg  2.cfg  3.cfg  4.cfg

3) så bruker vi find til å gi dem nytt navn, og sjekker at det gikk bra

$ find -name "*.cfg" | xargs -I{} mv {} {}.gammel
$ ls
1.cfg.gammel  2.cfg.gammel  3.cfg.gammel  4.cfg.gammel

Forklaring:

  1. find søker opp alle filer med filendelse .cfg
  2. | sender filnavnene til xargs
  3. Parameteret -I{} sier at vi skal utføre en erstatning av tegn og mv {} {}.gammel sier flytt alle elementene til {}.gammel. ({} symboliserer filnavnene til alle elementene som xargs mottar)