ФайлыПереименовать два файла в той же папке
events-number1.10a.pdf
Результат
events-number1.10a.docx.pdf
Ideal
events-number1.10a.pdf
events-number1.10a.docx.pdf
ФайлыПереименовать два файла в той же папке
events-number1.10a.pdf
Результат
events-number1.10a.docx.pdf
Ideal
events-number1.10a.pdf
events-number1.10a.docx.pdf
Вы можете попробовать этот простой Баш скрипт
#!/bin/bash
for file in *.pdf
do
new_file=$(echo "$file" | sed -r 's/(.*)(\.pdf)/\1.docx\2/')
mv $file $new_file
done
Выход:
events-number1.index10a.docx.pdf
events-number1.index10b.docx.pdf
events-number1.index10c.docx.pdf
events-number2.index10a.docx.pdf
events-number2.index10b.docx.pdf
events-number2.index10c.docx.pdf
Если вы хотите скопировать файл, используя cp
команду вместо mv
команды
cp $file $new_file
Так что ваши существующие файлы не будут меняться.
Объяснение:
Передача все лог-файл для цикла, а затем разделить имя файла ожидаемого результата для использования sed
команды и хранится в одной переменных. Затем mv старый файл в новый файл, который означает ваш ожидаемый файл.
Ничего себе, пока я все еще смотрю учебник. возможный ответ готов! – user3096996
Можете ли вы объяснить Wow, пока я все еще смотрю учебник. возможный ответ готов! Не могли бы вы немного объяснить? Я не просто хочу ответа, и это не идеальный результат, а это значит, что я должен работать над этим с вашими объяснениями. Кстати, он не работает на Mac – user3096996
Обе две внутренние линии могут быть объединены в один с помощью методов расширения параметров bash: 'mv '$ {file}" "$ {file # log} main.gmt.log" ' – Jdamian
Простая команда rename выполнит эту работу.
rename 's/(?=\.pdf$)/.docx/' *.pdf
Каков ваш ожидаемый результат? 2-й или 3-й? –