Adresáre, súbory
Pár (2) nie každodenných ale užitočných postupov na prácu s adresármi a súbormi.
1) Premenuj súbory podľa zoznamu (rename files from list)
Situácia: v adresári mám množinu súborov, tieto majú názvy v rôznych jazykoch, písmach
Cieľ: chcem z nich vybrať súbory *.mkv a premenovať ich, ale nástroj Thunar - Bulk Rename Files mi z nejakého dôvodu nepostačuje, nevyhovuje alebo musím použiť kombináciu s ručným premenovaním
Riešenie:
- vytvor txt súbor s názvami, ktoré chceš premenovať:
find . -name "*.mkv" > files.txt
- premenuj tieto názvy tak, že nový názov dopíšeš za ten pôvodný v tvare:
./prvý.mkv ./novýprvý.mkv
- uprav zoznam, nesmú tam byť medzery, alebo ich v txt súbore daj do úvodzoviek
- nechaj previesť názvy:
while read line; do eval mv $line; done < files.txt
#určite si to najprv vyskúšajte na nejakej vzorke kópií, čo ak som tam urobil chybu
2) Vytvor adresáre zo zoznamu (create directories from list)
Situácia: mám množinu adresárov s diakritikou a na inom (záložnom) médiu podobnú množinu adresárov ale bez diakritiky
Cieľ: chcem mať adresáre s diakritikou aj na druhom médiu ale nechcem kopírovať zo zdroja, je tam veľké množstvo dát a nechcem ani prepisovať stávajúce, pretože ich je veľké množstvo
Riešenie:
- vytvor zoznam z existujúcich adresárov:
ls -d -- */ > dirlist.txt
- uprav zoznam, ak treba, nesmú tam byť medzery, doplň ho, ak chceš vytvoriť aj nové adresáre
- over si vytvorenie adresárov:
cut -d " " -f 1 dirlist.txt | xargs echo mkdir
- ak je to v poriadku, vymaž "echo" a vytvor adresáre:
cut -d " " -f 1 dirlist.txt | xargs mkdir
Pre pridávanie komentárov sa musíte prihlásiť.
Súbory s medzerami sú vždy "opruz". Buď to treba mať v úvodzovkách, alebo medzery escapovať.
Ja na odstránenie a nahradzenie medzier podtržníkmi a súčasne na odstránenie diakritiky používam detox, je i v repozitároch alebo na https://github.com/dharple/detox
Nejako takto:
for file in *; do detox "$file" ; done
Nejako takto ti to presne fungovat nebude: