Alfred i kopiowanie nazw plików lub folderów
Niemal cztery lata temu podzieliłem się z Wami workflow, którego zadaniem było kopiowanie nazw zaznaczonego pliku lub folderu. Teraz wracam do tego tematu z ulepszoną wersją.
Największą bolączką poprzedniej wersji mojego workflow był brak obsługi wielu plików jednocześnie. Po wielu bojach w końcu udało mi się osiągnąć ten cel w sposób mnie zadowalający. Akcja przepisana jest praktycznie od zera i teraz nie opiera się na skrypcie Basha, ale na Pythonie. Treść skryptu możecie znaleźć poniżej:
from os.path import basename
import re, sys
query = "{query}"
query = re.sub('\t', '\n', query)
query = query.splitlines()
num = len(query)
for i in range(0,num):
query[i] = basename(query[i])
wynik = "\n".join(query)
sys.stdout.write(wynik)
Pokrótce postaram się opisać poszczególne fragmenty:
from…
…import…
– tu oczywiście importujemy potrzebne biblioteki;query = re.sub('\t', '\n', query)
– ten fragment jest odpowiedzialny za podmianę tabulatorów rozdzielających kolejne ścieżki plików na nowe linie, przez co tworzymy ciąg składający się z wielu linii tekstu;query = query.splitlines()
– tym poleceniem konwertujemy wieloliniową zmienną na listę;num = len(query)
– dzięki temu fragmentowi ustalamy, ile elementów znajduje się na liście;for …
– rozpoczynamy pętlę która będzie przetwarzała każdy z elementów listy;query[i] = basename(query[i])
– dla każdego elementu listy poleceniebasename
„wyciąga” ostatni kawałek ścieżki, czyli nazwę pliku lub katalogu i nadpisuje ją na poprzednią wartość elementu;wynik = "\n".join(query)
– przedostatnim krokiem jest ponowne przekonwertowanie listy elementów na wieloliniowy ciąg tekstowy.sys.stdout.write(wynik)
– to polecenie zwraca nam ciąg nazw, z których każda jest w osobnej linii. Jego działanie jest podobne do bardziej znanegoprint
, ale w odróżnieniu od tego drugiego nie wstawia na końcu dodatkowej, nowej linii.
Wynik powyższego skryptu jest przekazywany do kolejnego elementu – Copy to Clipboard, dzięki czemu możemy wkleić skopiowane nazwy w wybrane przez nas miejsce.
Workflow Copy Name możecie pobrać stąd.
Więcej workflows dla Alfreda znajdziecie tutaj.