Переименуйте все файлы «.pdf» в «_0.pdf» [duplicate]

10

Я хочу скопировать все файлы *.pdf в *_0.pdf

Как я могу это сделать?

    
задан Jonas 07.08.2017 в 12:51
источник

5 ответов

16

Простым способом было бы использовать команду mmv :

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

Возможно, вам потребуется установить его сначала (доступно в репозитории Universe):

sudo apt-get install mmv
    
ответ дан sempaiscuba 07.08.2017 в 13:05
10

С rename ( prename ):

rename -n 's/\.pdf$/_0$&/' *.pdf
  • \.pdf$ соответствует .pdf в конце имени файла
  • в замене, матч добавляется _0 : _0$&
  • drop -n для действительного действия

С расширением параметра bash :

for f in *.pdf; do pre="${f%.pdf}"; echo mv -- "$f" "${pre}_0.pdf"; done
  • pre="${f%.pdf}" сохраняет часть имени файла до .pdf как переменной pre

  • , в то время как mv -ing _0.pdf добавляется к $pre : ${pre}_0.pdf

  • drop echo для действительного действия

Пример:

% 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
    
ответ дан heemayl 07.08.2017 в 12:57
3

Вы хотите переименовать или скопировать?

Чтобы переименовать, вы можете использовать emacs:

  1. Откройте родительский каталог в качестве загруженного буфера
  2. Введите M-x wdired-change-to-wdired-mode
  3. Используйте M-x query-replace для замены «.pdf» на «_0.pdf»
  4. Введите C-x C-s для сохранения буфера.
ответ дан asrhaerhawer 07.08.2017 в 17:18
1

Вы хотите переименовать или скопировать файлы? Для обоих вы можете просто использовать цикл for и mv (перемещать, также переименовывать) или cp (копировать):

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

или скорее

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

Кавычки нужны только в том случае, если (один из) ваших файлов содержит пробелы.

Краткое объяснение: ${i/%.pdf/_0.pdf} принимает переменную i и заменяет «.pdf» на «_0.pdf», если она найдена в конце строки (следовательно, % ). Подробнее о потрясающих сверхспособностях bash здесь .

    
ответ дан dessert 07.08.2017 в 19:26
-1

Простые файлы решений в одном каталоге

В оболочке sh rename поможет вам:

rename .pdf _0.pdf *.pdf

Выполните команду comand в каталоге с файлами pdf.

Файлы внутри каталога рекурсивные

Если у вас есть файлы внутри каталогов и вы хотите найти их все и заменить:

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

ответ дан Psycho 07.08.2017 в 22:16