GNU/Linux >> Znalost Linux >  >> Linux

Jak přejmenovat více souborů v jednom příkazu nebo skriptu v Unixu?

Většina standardních shellů poskytuje způsob, jak provést jednoduchou náhradu textu v proměnných shellu. http://tldp.org/LDP/abs/html/parameter-substitution.html vysvětluje následovně:

${var/Pattern/Replacement}

First match of Pattern, within var replaced with Replacement.

Použijte tedy tento skript k procházení všech příslušných souborů a přejmenování každého z nich:

for file in aro_tty-mIF-*_opt
do
    mv -i "${file}" "${file/-mIF-/-mImpFRA-}"
done

Přidal jsem volbu -i, takže máte možnost potvrdit každou operaci přejmenování. Jako vždy byste si měli udělat zálohu všech svých souborů, než provedete velké množství přejmenování nebo mazání.


Pokud nemáte Perl's rename :

perl -e '
FILE:for $file (@ARGV){
        ($new_name = $file) =~ s/-mIF-/-mImpFRA-/
        next FILE if -e $new_name;
        rename $file => $new_name
}' *_opt

Pokud uděláte mít Perlův rename :

rename 's/-mIF-/-mImpFRA-/' *_opt

Než vyzkoušíte složité příkazy, jako jsou následující, zálohujte si soubory . Nikdy nevíte, co může způsobit překlep (můj nebo váš).

S mv (jak jste se ptali v komentáři --- rename jak je navrženo v druhé odpovědi, je pravděpodobně bezpečnější, zvláště pokud můžete mít v názvech souborů mezery nebo podivné znaky) něco ze stylu

for f in *_opt; do
    a="$(echo $f | sed s/-mIF-/-mImpFRA-/)"
    mv "$f" "$a"
done

Linux
  1. Jak spustit jeden příkaz na více vzdálených systémech najednou

  2. Jak přejmenovat více souborů v jediném příkazu nebo skriptu v systému Unix?

  3. Jak přejmenovat více souborů najednou v Linuxu

  1. Jak mohu ftp a stáhnout soubory ze skriptu prostředí UNIX

  2. Jak nahradit řetězec ve více souborech v příkazovém řádku linuxu

  3. Linux Bash Script, jeden příkaz, ale více řádků?

  1. Jak vytvořit skript příkazu Linux

  2. Jak rozdělit jeden soubor do více souborů na základě řádků

  3. Jak přejmenovat více souborů pomocí funkce Najít?