Я использую 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
, даже если они не находятся в конце строки.