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

В каталоге у меня около 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}

  • Как найти удобочитаемую информацию о типах файлов, распознанных `file`?
  • Анонимный файл и папка / владелец
  • Стандартные дескрипторы файла ввода-вывода
  • Создайте виртуальный файл, который на самом деле является командой
  • Создайте поддельное устройство для чтения, такое как файл с incrond
  • Использование find и sed для копирования 20-й строки многих файлов в один файл
  • Совместное использование сетевых файлов с сервером freebsd
  • Как Linux отличается между открытием файла в режиме чтения и фактическим чтением данных из него?
  • Скопируйте файлы, которые частично соответствуют другим файлам в другом месте
  • Результат «ls | wc -l "не соответствует реальному количеству файлов
  • Как мне выполнить ls, а затем отсортировать результаты по дате?
  • Более сложная команда файлов для глубокого контроля?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.