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:
- find søker opp alle filer med filendelse .cfg
- | sender filnavnene til xargs
- 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)