GNU/Linux >> Znalost Linux >  >> Linux

Shell/Bash zkratka pro hromadné přejmenování souborů ve složce

Existuje prename , který vám umožňuje používat REGEX:

prename 's/^.*-doc-(.*\.txt)$/doc-$1/'  *.txt

Použijte volbu -n simulovat:

prename -n 's/^.*-doc-(.*\.txt)$/doc-$1/'  *.txt

Poznámka: Toto je odesláno jako rename v mnoha distribucích Linuxu, ale ne ve všech – proto používám kanonický název nástroje, který je součástí Perlu.


Navrhoval bych něco takového:

for i in *-doc-*.txt; do mv "$i" "${i/*-doc-/doc-}"; done

${i/*-doc-/doc-} nahradí první výskyt *-doc- s doc- .

Pokud potřebujete provést více než jednu výměnu (viz komentář číslo 1), musíte použít ${var//Pattern/Replacement} varianta. Pokud potřebujete nahradit začátek názvu, musíte použít ${var/#Pattern/Replacement} , pokud potřebujete nahradit konec (tj. příponu), musíte použít ${var/%Pattern/Replacement} formulář.

Další podrobnosti najdete v části Rozšíření parametrů prostředí. Toto rozšíření je specifické pro bash.


Pokud máte rename pak rename 's/^.*-doc-/doc-/' *.txt měl by stačit.


Pokud se chcete vrátit do podadresářů, je zde také:

find . -maxdepth N -type f -name "$pattern" | sed -e 'p' -E -e "s/$str1/$str2/g" | xargs -n2 mv

V systému, který automaticky podporuje rozšířené Regexpy, můžete -E vynechat .

Výhody:

  • vrací se do podadresářů
  • můžete ovládat maximální hloubku rekurze
  • můžete přejmenovat soubory a/nebo adresáře (-type f|d)

Nevýhody:

  • trochu složitější regulární výrazy, protože musíte odstranit cestu, abyste se dostali k názvu souboru

(odpověď upravena odtud)


Linux
  1. Skript pro sledování nových souborů ve složce?

  2. Shell skript pro přesun nejstarších souborů?

  3. Nastavení v Bash pro Globbing, pro kontrolu, zda * odpovídá tečkovým souborům?

  1. Potřebujete Shell pro Scp?

  2. Rozšíření cesty Bash/shell pro Mkdir, Touch atd?

  3. Jak vytvořit prostředí Clean Shell pro dočasné použití?

  1. 12 Bash pro příklady smyček pro vaše skriptování prostředí Linux

  2. Jak BASH Shell načítá své konfigurační soubory v Linuxu

  3. Jak nahradit proměnné shellu ve složitých textových souborech