Zmień nazwę wszystkich plików ".pdf" na "_0.pdf" [duplicate]

10

Chcę skopiować wszystkie pliki *.pdf do *_0.pdf

Jak mogę to zrobić?

    
zadawane Jonas 07.08.2017, 14:51
źródło

5 odpowiedzi

16

Prostym sposobem byłoby użycie polecenia mmv :

mmv '*.pdf' '#1_0.pdf'

Najpierw musisz ją najpierw zainstalować (dostępna w repozytorium Universe):

sudo apt-get install mmv
    
odpowiedział sempaiscuba 07.08.2017, 15:05
źródło
10

Z rename ( prename ):

rename -n 's/\.pdf$/_0$&/' *.pdf
  • \.pdf$ dopasowuje .pdf na końcu nazwy pliku
  • w zamienniku dopasowanie jest poprzedzone _0 : _0$&
  • upuść -n dla rzeczywistego działania

Z rozszerzeniem parametru bash :

for f in *.pdf; do pre="${f%.pdf}"; echo mv -- "$f" "${pre}_0.pdf"; done
  • pre="${f%.pdf}" zapisuje część nazwy pliku przed .pdf jako zmienną pre

  • podczas gdy mv -ing _0.pdf jest dodawane do $pre : ${pre}_0.pdf

  • upuść echo dla rzeczywistego działania

Przykład:

% rename -n 's/\.pdf$/_0$&/' *.pdf
rename(egg.pdf, egg_0.pdf)
rename(spam.pdf, spam_0.pdf)

% for f in *.pdf; do pre="${f%.pdf}"; echo mv -- "$f" "${pre}_0.pdf"; done
mv -- egg.pdf egg_0.pdf
mv -- spam.pdf spam_0.pdf
    
odpowiedział heemayl 07.08.2017, 14:57
źródło
3

Czy chcesz zmienić nazwę lub skopiować?

Aby zmienić nazwę, możesz użyć emacsa:

  1. Otwórz katalog nadrzędny jako bufor sieciowy
  2. Wpisz M-x wdired-change-to-wdired-mode
  3. Użyj M-x query-replace , aby zamienić ".pdf" na "_0.pdf"
  4. Wpisz C-x C-s , aby zapisać bufor
odpowiedział asrhaerhawer 07.08.2017, 19:18
źródło
1

Czy chcesz zmienić nazwę lub skopiować pliki? Dla obu możesz po prostu użyć pętli for i mv (przenieś, zmienia nazwy) lub cp (copy):

for i in *.pdf; do mv "$i" "${i/%.pdf/_0.pdf}"; done

lub raczej

for i in *.pdf; do cp "$i" "${i/%.pdf/_0.pdf}"; done

Znaki cudzysłowu są potrzebne tylko wtedy, gdy (jeden z) twoich plików zawiera spacje.

Szybkie wyjaśnienie: ${i/%.pdf/_0.pdf} przyjmuje zmienną i i zastępuje ".pdf" przez "_0.pdf", jeśli znajduje się na końcu łańcucha (stąd % ). Przeczytaj więcej o niesamowitych mocach basha tutaj .

    
odpowiedział dessert 07.08.2017, 21:26
źródło
-1

Proste pliki rozwiązania w tym samym katalogu

Na sh powłoki, rename pomoże ci:

rename .pdf _0.pdf *.pdf

Uruchom komendę w katalogu z plikami pdf.

Pliki wewnątrz rekursywnego katalogu

Jeśli masz pliki w katalogach i chcesz je znaleźć wszystkie i zastąp:

find . -iname "*.pdf" | fgrep -v _0.pdf | xargs -n1 echo rename .pdf _0.pdf

    
odpowiedział Psycho 08.08.2017, 00:16
źródło

Przeczytaj inne pytania na temat tagów