Zmienianie nazw zdjęć w określonej kolejności


8

To jest mój problem: mam folder z 500 obrazami o nazwie:

1.jpg
2.jpg
3.jpg

i tak dalej..

Skopiowałem ten folder i teraz muszę zmienić nazwy tych samych zdjęć z 501 na 1000, ale w następujący sposób:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Kiedy używam mojego standardowego polecenia zmiany nazwy:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Zamawia obrazy od 501 do 1000, ale wszystkie są rozproszone:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(są w odpowiedniej kolejności, ale je pomieszają)

Wiem, że prawdopodobnie brakuje mi jednego polecenia ...


Użyj 2 zmiennych i oraz j mv $ i.jpg $ j.jpg i zwiększ swoje zmienne.
Panther,

dziękuję, mam nadzieję, że to rozwiążesz. Szukałem, ale nie znalazłem odpowiedzi ..
Painkiller

Ciekawe, jakie są oryginalne nazwy, w jakim zakresie? Czy pierwotną liczbę należy zmienić na + 500?
Jacob Vlijm,

Tak, Jakubie +500. Próbuję napisać to, co powiedział mi bodhi, ale nie jestem tak dobry w lnux, zabiłem siebie, aby napisać powyższą komendę zmiany nazwy: D
Painkiller

Mój kiepski laptop jest bardzo zajęty przez bankomat, ale jeśli nie pojawi się satysfakcjonująca odpowiedź (w co wątpię :)), a jeśli nie dasz rady, opublikuję dziś mały skrypt w języku Python.
Jacob Vlijm,

Odpowiedzi:


7

Wypróbuj Thunar , który jest domyślnym menedżerem plików dla Xfce. Jest bardzo lekki i ma poręczne narzędzie do zmiany nazwy. Możesz zainstalować Thunar, uruchamiając następujące polecenie w Terminalu:

sudo apt-get install thunar

Prawdopodobnie będziesz mógł również zainstalować z oprogramowania Ubuntu.

Jak korzystać z narzędzia

  1. Po zainstalowaniu Thunar uruchom narzędzie Bulk Rename .
  2. Kliknij ikonę + i dodaj pliki, których nazwę chcesz zmienić, w odpowiedniej kolejności.
  3. Kliknij menu rozwijane tuż pod listą wybranych plików i wybierz Numerowanie . Kliknij pole obok niego i wybierz opcję Tylko nazwa .
  4. W polu „ Rozpocznij od: ” wpisz 501, a pole „ Tekst: ” pozostaw puste. Podgląd zmian powinien zostać wyświetlony w kolumnie Nowa nazwa .
  5. Aby zastosować zmiany, kliknij przycisk Zmień nazwę plików .

Oprócz numerowania to narzędzie obsługuje następujące działania:

  • Wstaw datę / godzinę
  • Wstaw / Zastąp
  • Usuń postacie
  • Wyszukaj i zamień
  • Wielkie / małe litery

Dzięki stary, jesteś MVP! Muszę tylko dodać, że musiałem również zmienić format tekstu na: tekst - liczba. (na wypadek, gdyby ktokolwiek inny tego użył)
Painkiller

2
Przełączenie FM na ... wykonanie prostego zadania wydaje mi się przesadą. Napisanie prostego rozszerzenia skryptu nautilus zajmuje mniej czasu niż przełączenie fm.
Jacob Vlijm,

1
@JacobVlijm Używam Thunar tylko do narzędzia do zmiany nazw wraz z Nautilus. Thunar jest dość lekki i nie powoduje żadnych konfliktów z Nautilus lub innymi menedżerami plików.
pomsky

4
Jeśli nie chcesz drugiego menedżera plików, pyrenamerdziała idealnie i to jest to, czego używam do zmiany nazw piętrowych, gdy chcę, aby GUI porównał przed / po wyjściu.
Tom Brossman,

13

findPolecenie wyszukuje pliki w katalogu „” zamówienie ( 23.jpg, 66.jpg...). możesz umieścić |sortpo znalezieniu.

Ale twoje metody są nadmiernie złożone.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 

3
for i in {1..500}; do ...byłoby łatwiej pszczoły.
David Foerster


5

Jeśli zrozumiałem, o co pytasz poprawnie, myślę, że możesz to zrobić za pomocą domyślnego narzędzia zmiany nazwy:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

-vnPo testowaniu należy usunąć przełącznik (verbose - no action), aby zmiana była skuteczna.


Jak zainstalować to narzędzie w Ubuntu? domyślnie renamejest powiązany prename(1)z perlpakietem, który nie obsługuje wszystkich tych opcji wiersza poleceń.
David Foerster,

@DavidFoerster Być może masz rację. Nie mogłem znaleźć bieżącego linku instalacyjnego (nie korzystałem z niego od około 2014 roku). Myślę, że przy domyślnym narzędziu zmiany nazwy wyrażenie regularne powinno być 's/^(\d+)/sprintf("%d",$1+500)/e'. Zaktualizuję odpowiednio swoją odpowiedź. Dzięki.
sempaiscuba

1
Twoja odpowiedź jest teraz duplikatem AFSHIN .
David Foerster

@DavidFoerster Przepraszamy, jaka odpowiedź? Jedyne inne odpowiedzi, które widzę, to pomsky i waltinator. Nie używaj też zmiany nazwy (żadnej wersji).
sempaiscuba

Bezpośredni link do odpowiedzi, którą mam na myśli, znajduje się w moim poprzednim komentarzu.
David Foerster

0

Kolejny sposób na osiągnięcie tego za pomocą polecenia powłoki

count = 1; dla i w ls; do mv $ i CN $ ((count ++)). $ {i ## *.}; gotowy

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.