Moje odkazy
vydáno: 10. 8. 2014 16:49, aktualizováno: 10. 8. 2014 18:38
Když potřebujete na příkazové řádce přejmenovat soubor, tak použijete příkaz mv
. Díky bash-completion vám to bude napovídat názvy, takže můžete relativně pohodlně pracovat i se soubory s dlouhými a složitými názvy a s mezerami. Ale přeci jen je trochu otrava mít na příkazové řádce ten dlouhý název dvakrát a taky dávat pozor na zvláštní znaky – např. když chcete dopsat mezery, tak před ně musíte psát \
zpětné lomítko, nebo to mít celé v uvozovkách. Řešením může být použití Midnight commanderu (mc
), ale pokud chcete zůstat v CLI, se vám může hodit následující funkce: ir
Klasické přejmenování pomocí mv
vypadá takhle:
$ touch 'nějaký soubor s dlouhým názvem a #divnými znaky$.txt' $ ls nějaký\ soubor\ s\ dlouhým\ názvem\ a\ #divnými\ znaky\$.txt nějaký soubor s dlouhým názvem a #divnými znaky$.txt $ mv nějaký\ soubor\ s\ dlouhým\ názvem\ a\ #divnými\ znaky\$.txt nějaký\ soubor\ s\ dlouhým\ názvem\ bez\ divných\ znaků.txt $ ls nějaký\ soubor\ s\ dlouhým\ názvem\ bez\ divných\ znaků.txt nějaký soubor s dlouhým názvem bez divných znaků.txt
Pomocí bashovské funkce (viz níže) ir
si můžeme soubor interaktivně přejmenovat (případně i přesunout do jiného adresáře), aniž bychom museli řešit escapování zvláštních znaků nebo mezer:
$ touch 'nějaký soubor s dlouhým názvem a #divnými znaky$.txt' $ ir nějaký\ soubor\ s\ dlouhým\ názvem\ a\ #divnými\ znaky\$.txt > nějaký soubor s dlouhým názvem bez divných znaků.txt $ ls nějaký\ soubor\ s\ dlouhým\ názvem\ bez\ divných\ znaků.txt nějaký soubor s dlouhým názvem bez divných znaků.txt
Zobrazí se nám prompt uvozený >
, na kterém si přepíšeme název souboru na nový.
Funkce ir
je krátká a stačí si ji nakopírovat do .bashrc
:
# interaktivní přejmenování
# parametry:
# - název souboru
# - cílový adresář (volitelně; musí končit lomítkem)
function ir() {
read -e -p "> " -i "$1" novy_nazev;
mv "$1" "$2$novy_nazev";
}
Volitelně můžete uvést druhý parametr a v jednom kroku soubor přejmenovat a zároveň přesunout do jiného adresáře.
Dokonce vám tu budou fungovat obvyklé klávesové zkratky:
Nejde o úplnou novinku, inspirací mi byl Králykův zápisek na AbcLinuxu a jeho implementace této funkce v Pythonu. Už tehdy jsem si to přepsal do Bashe, takže tohle je jen takový dokumentační zápisek pro mě, aby mi to nezapadlo v komentářích na Ábíčku.
Tento článek zatím nikdo nekomentoval