Korzystanie z narzędzi StringSolver (Windows i Linux Bash ), które przetwarzają na przykładach:
filter fghfilea ok fghreport ok notfghfile notok; mv --all --filter fghfilea jklfilea
Najpierw oblicza filtr na podstawie przykładów , w których dane wejściowe to nazwy plików i dane wyjściowe (ok i notok, dowolne ciągi znaków). Gdyby filtr miał opcję --auto lub został wywołany sam po tym poleceniu, utworzyłby odpowiednio folder ok
i folder notok
i wypchnąłby do nich pliki.
Następnie za pomocą filtra mv
polecenie jest półautomatycznym ruchem, który staje się automatyczny z modyfikatorem --auto. Korzystając z poprzedniego filtra dzięki opcji --filter, znajduje mapowanie od fghfilea
do, jklfilea
a następnie stosuje je do wszystkich filtrowanych plików.
Inne rozwiązania jednowierszowe
Inne równoważne sposoby robienia tego samego (każda linia jest równoważna), więc możesz wybrać swój ulubiony sposób.
filter fghfilea ok fghreport ok notfghfile notok; mv --filter fghfilea jklfilea; mv
filter fghfilea ok fghreport ok notfghfile notok; auto --all --filter fghfilea "mv fghfilea jklfilea"
# Even better, automatically infers the file name
filter fghfilea ok fghreport ok notfghfile notok; auto --all --filter "mv fghfilea jklfilea"
Rozwiązanie wieloetapowe
Aby dokładnie sprawdzić, czy polecenia działają dobrze, możesz wpisać następujące polecenie:
filter fghfilea ok
filter fghfileb ok
filter fghfileb notok
a gdy masz pewność, że filtr jest dobry, wykonaj pierwszy ruch:
mv fghfilea jklfilea
Jeśli chcesz przetestować i użyć poprzedniego filtra, wpisz:
mv --test --filter
Jeśli transformacja nie jest tym, czego chciałeś (np. Nawet gdy mv --explain
widzisz, że coś jest nie tak), możesz wpisać, mv --clear
aby zrestartować przenoszenie plików lub dodać więcej przykładów, mv input1 input2
gdzie input1 i input2 są innymi przykładami
Kiedy jesteś pewny, po prostu pisz
mv --filter
i voila! Cała zmiana nazwy odbywa się za pomocą filtra.
ZASTRZEŻENIE: Jestem współautorem tego dzieła wykonanego do celów akademickich. Wkrótce może pojawić się funkcja produkująca bash.