2

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

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

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

3 ответа3

2

Заимствовано из Stackoverflow:

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

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

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

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

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

Еще одно альтернативное решение: от SU

1

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

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

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

:%s/\.jpg$//

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

        hammer.jpg              screwdriver.jpg         wrench.jpg

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

:%s/\.jpg//g

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .