FK~

Moje odkazy

Ostatní odkazy

Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
There Is No Cloud …just other people's computers.
Sane software manifesto / Manifest příčetného softwaru

ir: interaktivní přejmenování souboru v konsoli

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

ir v Konsoli – interaktivní přejmenování souboru

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:

  • šipky nahoru/dolů: procházení historie
  • ctrl+r: prohledávání historie
  • ctrl+k: smazání od kurzoru do konce řádku
  • ctrl+u: smazání od začátku řádku ke kurzoru
  • ctrl+y: vložení dříve smazaného textu

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.

Odkazy a zdroje:

Témata: [GNU/Linux] [taháky] [Bash]

Komentáře čtenářů

Tento článek zatím nikdo nekomentoval

Přidat komentář

reagujete na jiný komentář (zrušit)
jméno nebo přezdívka
název příspěvku
webová stránka, blog
e-mailová adresa
nápověda: možnosti formátování
ochrana proti spamu a špatným trollům

Náhled komentáře