Переименовать все файлы «.pdf» в «_0.pdf» [дубликат]

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

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

11
задан 7 August 2017 в 16:02

5 ответов

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

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

rename .pdf _0.pdf *.pdf

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

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

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

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

0
ответ дан 7 August 2017 в 16:02

Вы хотите переименовать или скопировать файлы? Для обоих можно просто использовать для цикла и 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”, если это найдено в конце строки (следовательно %). Читайте больше об удивительных супердержавах удара здесь .

0
ответ дан 8 August 2017 в 02:02

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

Для переименования можно использовать emacs:

  1. Открывают родительский каталог как сушеный буфер
  2. Использование Типа M-x wdired-change-to-wdired-mode
  3. M-x query-replace для замены '.pdf' '_0.pdf'
  4. Тип C-x C-s для сохранения буфера
0
ответ дан 8 August 2017 в 02:02

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

mmv '*.pdf' '#1_0.pdf'
<час>

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

sudo apt-get install mmv
0
ответ дан 8 August 2017 в 02:02

С rename (prename):

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

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

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

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

  • отбрасывание 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
10
ответ дан 8 August 2017 в 02:02

Другие вопросы по тегам:

Похожие вопросы: