Listando nomes de arquivo sem extensões no terminal?

2

Estou usando um mac. Eu preciso obter uma lista de arquivos em uma pasta sem que suas extensões sejam incluídas na lista. Isso ocorre porque eu preciso de uma lista de produtos para uma importação de site e, convenientemente, os nomes das imagens são os mesmos que os nomes dos produtos. No entanto, minha lista não precisa ter as extensões.

Eu consegui uma lista de nomes de arquivos usando o terminal e consegui copiá-los em 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 de passar pelo meu arquivo de texto e excluir manualmente a extensão de cada nome de arquivo (há mais de mil) e isso vai demorar muito tempo. Existe um caminho mais fácil? Posso obter terminal para exibir uma lista de nomes de arquivos sem suas extensões para que eu possa copiar e colá-lo em uma lista? Ou posso remover as extensões desses arquivos, listá-las no terminal e copiar seus nomes? Existe outro caminho? Confuso aqui. Eu não sou um programador, apenas um design de site.

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

    
por TyMurcielago 01.05.2015 / 21:40

3 respostas

2

Emprestado de Stackoverflow :

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

Eu tentei marcar 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, localize todos os arquivos ao contrário dos diretórios - type f e, em seguida, execute basename para cada um. O -s permite que você especifique um sufixo conhecido para remover.

Outra solução alternativa: da SU

    
por 01.05.2015 / 22:28
1

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
    
por 01.05.2015 / 22:12
1

Você usa vi (ou vim )? Se você fizer isso, já que 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 / vim e digitar

:%s/\.jpg$//

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

        hammer.jpg              screwdriver.jpg         wrench.jpg

apenas deixe de fora o $ e adicione g e diga

:%s/\.jpg//g

que removerá todas ocorrências de .jpg , mesmo que não estejam no final de uma linha.

    
por 01.05.2015 / 23:43