![Listando nomes de arquivos sem extensões no Terminal?](https://rvso.com/image/1449096/Listando%20nomes%20de%20arquivos%20sem%20extens%C3%B5es%20no%20Terminal%3F.png)
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 f
e execute basename
para cada um. Permite -s
especificar 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
/ vim
e digitar
:%s/\.jpg$//
que diz, em cada linha do arquivo, procure o .jpg
que 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 g
e dizer
:%s/\.jpg//g
que irá removertodosocorrências de .jpg
, mesmo que não estejam no final de uma linha.