копировать файлы на новое имя – кратчайший путь

В каталоге у меня около 150 файлов с определенным расширением, например:

abc.ext def.ext ghi.ext ... 

Теперь я хочу скопировать все эти файлы также в новое имя файла (без расширения):

 abc def ghi 

Каков самый короткий способ сделать это? Возможно ли это без написания цикла в файле bash?

Редактировать: Спасибо за ваши ответы (dirkt, John Newman).
Увидев ответы, я буду придерживаться более короткого, хотя у него есть петля.

2 Solutions collect form web for “копировать файлы на новое имя – кратчайший путь”

Это возможно без написания сценария («файл bash»), но не без использования цикла:

 for f in *.ext ; do cp -- "$f" "$(basename "$f" .ext)" ; done 

basename можно использовать для удаления суффикса.

Это возможно без цикла. Это хорошо … Я оставлю это до вас.

 $ find . -type f -name "*.ext" -print0 | xargs -0 -I {} echo cp -T {} {}SUB | sed -e 's/\.extSUB//g' 

добавьте трубу в ш, чтобы выйти из режима сухого хода. Backticks не являются хорошими, поскольку он разделяет новые строки, если вы не имеете дело с $ IFS. Есть и другие проблемы с обратными тактами, как упоминалось выше. Также нужен cp -T, поскольку последний аргумент обычно ожидает каталог.

Мне не хватает «rep», чтобы прокомментировать сказанное выше, но вы можете использовать различные трюки с bash ${} чтобы избежать fork basename .

Подстрока: ${f:0:-4} или самое длинное совпадение: ${f%%.ext}

  • Как использовать wget со списком URL-адресов и их соответствующими выходными файлами?
  • dd: несколько входных файлов
  • Как я могу подсчитать количество строк файла с общими инструментами?
  • Есть ли способ предоставить разные разрешения для разных процессов, вызываемых от одного и того же пользователя?
  • Как остановить пользователя root от удаления файла?
  • Файлы, отсутствующие на диске и диске NTFS, разделены на многие
  • Как кот командный файл?
  • Переименование файлов при сохранении частей
  • Перемещено / var / log на новый логический том сейчас отсутствуют данные
  • Не удалось объединить файлы с помощью find ./subdir/* -print0 | сортировать | xargs -0 cat> merge.txt
  • Найдите данные о емкости и самый старый файл в формате Busybox
  • Сообщение «нет такого файла или каталога» при удалении файла, который существует в NTFS
  • Interesting Posts

    Настроена собственная файловая система вместо USB?

    Как сделать замену sed (s /// g) на основе списка? Мне нужно поменять несколько слов, с другими соответствующими словами

    Перенесите stderr и stdout в / dev / null с помощью / bin / sh

    Команды запуска «без» терминала

    Действительно ли `kill -p` действительно работает?

    Как подсчитать, сколько разных слов у меня есть в файле, в столбце

    Калитинговый веб-сайт Kali Linux с введенными учетными данными

    мобильный не признается Ubuntu13.04

    Почему приложение Run (Alt-F2) очень слабое на новом компьютере?

    Длительное время компиляции gcc

    Помогите мне понять владельца переменной места для команды curl в Dockerfile

    Сценарий оболочки для автоматического исключения и отключения приложения на основе системного времени

    Добавить текст между несколькими строками с sed, если предыдущая строка не соответствует шаблону

    Exim: ошибка в системном фильтре: некорректная числовая строка ""

    iw не удается настроить интерфейс

    Linux и Unix - лучшая ОС в мире.