Listando nomes de arquivos sem extensões no Terminal?

Listando nomes de arquivos sem extensões no Terminal?

Estou usando um mac. Preciso obter uma lista de arquivos em uma pasta sem que suas extensões sejam incluídas na lista. Isso ocorre porque preciso de uma lista de produtos para importar um site e, convenientemente, os nomes das imagens são iguais aos nomes dos produtos. No entanto, minha lista NÃO precisa ter as extensões.

Obtive uma lista de nomes de arquivos usando o terminal e consegui copiá-los para um arquivo de texto. O único problema é que os nomes dos arquivos incluem a extensão ".jpg". Usando a lista que tenho do terminal, agora terei que percorrer meu arquivo de texto e excluir manualmente a extensão de cada nome de arquivo (existem mais de mil) e isso vai demorar muito. Existe uma maneira mais fácil? Posso fazer com que o terminal exiba uma lista de nomes de arquivos sem suas extensões para que eu possa copiá-los e colá-los em uma lista? Ou posso remover as extensões desses arquivos, listá-los no terminal e copiar seus nomes? Existe outra maneira? Confuso aqui. Não sou programador, apenas designer de sites.

Espero que alguém possa ajudar com isso. Obrigado a todos!

Responder1

Emprestado deStackoverflow:

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

Tentei sinalizar como duplicado, mas não funcionou.

Uma das minhas próprias soluções, já que conhecemos a(s) extensão(ões) do arquivo.

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

Portanto, encontre todos os arquivos em vez de diretórios - type fe execute basenamepara cada um. Permite -sespecificar um sufixo conhecido para remover.

Outra solução alternativa:de SU

Responder2

Se você tiver sua lista de arquivos no arquivo "in.txt", execute este script para obter a lista de arquivos sem a extensão em "out.txt":

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

Responder3

Você usa vi(ou vim)? Se você fizer isso, como você já tem os nomes dos arquivos JPEG em um arquivo de texto, a maneira mais fácil pode ser editar esse arquivo com vi/ vime digitar

:%s/\.jpg$//

que diz, em cada linha do arquivo, procure o .jpgque ocorre no final de uma linha, remova-o e substitua-o por nada. Se houver algumas linhas que não terminam com .jpg, tudo bem; eles serão ignorados (ignorados). Se você tiver vários nomes de produtos (nomes de arquivos) por linha, como em

        hammer.jpg              screwdriver.jpg         wrench.jpg

basta deixar de fora $e adicionar ge dizer

:%s/\.jpg//g

que irá removertodosocorrências de .jpg, mesmo que não estejam no final de uma linha.

informação relacionada