Mam na przykład kilka folderów o różnych nazwach
2013-02 Snow and birds
PICT0001.jpg
PICT0002.jpg
2013-06 Bicycle trip
edited_panorama.jpg
From phone
DCIM0001.jpg
DCIM0002.jpg
DCIM0003.jpg
From camera
DSLR
PICT0001.raw
PICT0002.raw
Compact
S0000001.jpg
Jak widać, ogólna struktura jest zmiennym poziomem zagnieżdżonych podfolderów zawierających obrazy. Chcę spłaszczyć strukturę, dodając nazwę każdego poziomu podfolderów do nazwy pliku, tak jak poniżej:
2013-02 Snow and birds_PICT0001.jpg
2013-02 Snow and birds_PICT0002.jpg
2013-06 Bicycle trip_edited_panorama.jpg
2013-06 Bicycle trip_From phone_DCIM0001.jpg
2013-06 Bicycle trip_From phone_DCIM0002.jpg
2013-06 Bicycle trip_From phone_DCIM0003.jpg
2013-06 Bicycle trip_From camera_DSLR_PICT0001.raw
2013-06 Bicycle trip_From camera_DSLR_PICT0002.raw
2013-06 Bicycle trip_From camera_Compact_S0000001.jpg
Jak można to osiągnąć za pomocą skryptu terminalowego lub innego skryptu? Znalazłem podobne rozwiązania, ale wszystkie wydają się polegać na stałym poziomie podfolderów, podczas gdy moja struktura folderów jest różna.
Na potrzeby tego skryptu miałem wszystkie twoje foldery w folderze o nazwie „Filez” na moim pulpicie. Ten skrypt rozpoczyna się od okna dialogowego „wybierz folder”, aby wybrać folder zawierający folder, w którym znajdują się foldery „2013-06 Wycieczka rowerowa” i „2013-02 Śnieg i ptaki”. Spowoduje to zwrócenie wszystkich pojedynczych plików we wszystkich folderach i podfolderach, których nazwy chcesz zmienić.
źródło
Powyższa odpowiedź @nohillside jest naprawdę świetna. Jedyny problem polega na tym, że nie uwzględnia plików ze spacjami. Spowoduje to, że niektóre polecenia przestaną działać.
Dlatego zamieszczam odpowiedź, która również by to poparła.
To po prostu
echo
się domv
poleceń:To po prostu
echo
się domv
polecenia w swojej kartonowe bezpośrednio:[Ostrożnie] Spowoduje to natychmiastowe uruchomienie
mv
poleceń:źródło
echo
więc ma bezpośrednie kopiowanie i wklejanie, działa dla większości plików, z wyjątkiem tych, które wyrzucają błąd wyjaśniający użycie mvusage: mv [-f | -i | -n] [-v] source target