Řešení 1:
pro jeden soubor zkuste
mv dir1/dir2/dir3/file.{txt,txt.old}
 
 kde X{a,b} konstrukt expand na Xa Xb , náhled můžete zobrazit pomocí
echo dir1/dir2/dir3/file.{txt,txt.old}
 abyste zjistili, zda to vyhovuje vašim potřebám.
poznámka:
-  
to pro více souborů
mv dir1/dir2/dir3/file{1,2,3}.{txt,txt.old} 
je nepravděpodobné, že se rozšíří na to, co chcete. (to se rozšíří na směs soubor.txt soubor1.txt.starý soubor2.txt ...)
-  
{txt,txt.old}lze zkrátit na{,.old}podle komentáře -  
pokud je název adresáře jednoznačný, lze použít zástupný znak.
mv *1/*2/d*/*.{,old} 
 pro více souborů použijte rename 
rename -n s/txt/old.txt/ dir1/dir2/dir3/file*.txt 
 
 drop -n mít účinné přejmenování.
Řešení 2:
 Příkaz rename přejmenuje všechny odpovídající soubory. Jeho hlavním účelem je přejmenovat více souborů, ale pokud výraz v Perlu odpovídá pouze jednomu souboru, přejmenuje pouze tento jediný soubor. Pro podrobnosti a specifickou syntaxi distribuce si prosím přečtěte manuálovou stránku:man rename .
Příklad použití:přejmenujte „/cesta/soubor.txt“ na „/cesta/soubor.txt.old“:
 rename 's/file.txt/file.txt.old/g' /path/file.txt 
Kratší zápis (díky shalombu):
rename 's/$/.old/' /path/file.txt
rename '$_.=".old"' /path/file.txt
 
 Pro běh nasucho použijte rename -n .
Další příklady a podrobnosti lze nalézt na https://thepcspy.com/read/bulk-rename-files-in-ubuntu/
Řešení 3:
Líbí se mi řešení @archemar s použitím rozšíření {}, protože jej můžete použít, když jste již spustili příkazový řádek. Zde jsou některé další možnosti pro úplnost:
F="dir1/dir2/dir3/file.txt" ; mv "$F" "$F.old"
 (uvozovky jsou nutné pouze v případě, že máte v názvu mezery nebo jiné znaky pro dělení slov)
mymv() {
    mv "$1/$2" "$1/$3"
}
mymv dir1/dir2/dir3 file.txt file.txt.old
mymv dir5/dir6/dir7 file.txt file.txt.old
 Poznámky:
- Toto je syntaxe bash, možná používáte jiný shell
 mymvmůže být jakýkoli rozumný řetězec, použil jsem mymv pro "můj pohyb".- Definici funkce lze vložit do vašeho .bash_profile
 
Další:
cd dir1/dir2/dir3 ; mv file.txt file.txt.old ; cd -
 ale
(cd dir1/dir2/dir3/ && exec mv file.txt file.txt.old)
 (od @Adam a @CharlesDuffy) je pravděpodobně lepší v případě, že cd selže.
Řešení 4:
V jednorázovém případě, pokud nechci změnit svůj aktuální adresář, mohu použít pouze sub-shell:
(cd dir1/dir2/dir3/ && mv file.txt file.txt.old)
 
 Protože vy cd uvnitř sub-shell jste nezměnili svůj adresář ve vašem skutečném shellu
Řešení 5:
 Pokud chcete vstoupit do podadresáře za účelem zkrácení mv příkaz, ale chcete se poté vrátit do aktuálního adresáře, existují dva způsoby, jak to udělat. Jedním z nich je zadat cd a mv v subshell (jak již bylo navrženo).
 Druhým je použití pushd a popd pro změnu adresářů:
pushd dir1/dir2/dir3/; mv file.txt file.txt.old; popd
 
 pushd příkaz je jako cd , kromě toho, že nejprve vloží název aktuálního adresáře do zásobníku. popd odebere nejvyšší název ze zásobníku a změní se na tento adresář.