Shell Geek: Premenujte viacero súborov naraz

Shell Geek: Premenujte viacero súborov naraz
Shell Geek: Premenujte viacero súborov naraz
Anonim

Povedzme, že máte adresár so stovkami súborov s nesprávnymi názvami súborov a chcete nahradiť každý názov súboru, ktorý obsahuje test s prod, (to je konštruovaný príklad). Môžeme to ľahko urobiť s príkazom "pre" v bash, v kombinácii s trochou bash dobroty. Dnes sa naučíme nahradiť text v premennej v smyčke.

Príkaz "pre" funguje takto:

for var in ;do $var;done

Môžete nahradiť s akýmkoľvek vzorom zhody súborov, napríklad * alebo *.txt a môžete ho nahradiť s ľubovoľným príkazom linux. Príkaz bude spustený postupne na každom súbore zodpovedajúcom vzorovému vzoru súboru.

To je miesto, kde sa variabilná manipulácia bash stáva ešte zaujímavejším. Namiesto toho, aby sme robili niečo ako "mv $ var", môžeme nahradiť text v názve súboru pomocou tejto syntaxe:

${var/originaltext/replacetext}

Takže teraz, ak spustíme tento príkaz v našom adresári:

for f in *;do mv $f ${f/test/prod};done

Pre každý súbor zodpovedajúci *, bash vykoná podobný príkaz:

mv test.config prod.config

Zistil som, že znalosť shellu je neoceniteľná pri administrácii serverov alebo len pri spravovaní súboru a mne ušetril hodiny, čo by inak bolo manuálne.

A áno, uvedomujem si, že existuje niekoľko nástrojov, ktoré dokážu premenovať viac súborov.

Odporúča: