Вывод имен файлов без расширений в терминале?

Вывод имен файлов без расширений в терминале?

Я использую Mac. Мне нужно получить список файлов в папке без включения их расширений в список. Это потому, что мне нужен список продуктов для импорта на веб-сайт, и, что удобно, имена изображений совпадают с именами продуктов. Однако мой список НЕ должен иметь расширений.

Я получил список имен файлов с помощью терминала и смог скопировать их в текстовый файл. Единственная проблема в том, что имена файлов включают расширение ".jpg". Используя список, который у меня есть из терминала, мне теперь придется пройтись по текстовому файлу и вручную удалить расширение из каждого имени файла (их более тысячи), и это займет много времени. Есть ли более простой способ? Могу ли я заставить терминал отображать список имен файлов без их расширений, чтобы я мог скопировать и вставить его в список? Или я могу удалить расширения из этих файлов, затем перечислить их в терминале и скопировать их имена? Есть ли другой способ? Здесь я запутался. Я не программист, просто веб-дизайнер.

Надеюсь, кто-то сможет с этим помочь. Спасибо всем!

решение1

Заимствовано изПереполнение стека:

ls -1 | sed -e 's/\..*$//'

Я пробовал отметить как дубликат, но не получилось.

Одно из моих собственных решений, учитывая, что мы знаем расширение(я) файла.

find -type f -exec basename -s '.jpg' "{}" \;

Так что найдите все файлы, а не каталоги - type f, а затем выполните basenameдля каждого. -sПозволяет указать известный суффикс для удаления.

Другое альтернативное решение:из СУ

решение2

Если у вас есть список файлов в файле "in.txt", запустите этот скрипт, чтобы получить список файлов без расширения в "out.txt":

#!/bin/bash    
while read fullfile; do
    filename=$(basename "$fullfile")
    filename="${filename%.*}"
    echo $filename >> out.txt
done <in.txt

решение3

Используете ли вы vi(или vim)? Если используете, то, поскольку у вас уже есть имена файлов JPEG в текстовом файле, самым простым способом может быть редактирование этого файла с помощью vi/ vimи ввод

:%s/\.jpg$//

что говорит, в каждой строке файла, найдите .jpgв конце строки, удалите его и замените ничем. Если есть строки, которые не заканчиваются на .jpg, это нормально; они будут проигнорированы (пропущены). Если у вас есть несколько названий продуктов (имен файлов) в строке, как в

        hammer.jpg              screwdriver.jpg         wrench.jpg

просто уберите $и добавьте gи скажите

:%s/\.jpg//g

который удалитвсевхождения .jpg, даже если они не находятся в конце строки.

Связанный контент