¿Listar nombres de archivos sin extensiones en la terminal?

¿Listar nombres de archivos sin extensiones en la terminal?

Estoy usando una mac. Necesito obtener una lista de archivos en una carpeta sin que sus extensiones estén incluidas en la lista. Esto se debe a que necesito una lista de productos para importar un sitio web y, convenientemente, los nombres de las imágenes son los mismos que los nombres de los productos. Sin embargo, mi lista NO debe tener las extensiones.

Obtuve una lista de nombres de archivos usando la terminal y pude copiarlos en un archivo de texto. El único problema es que los nombres de los archivos incluyen la extensión ".jpg". Usando la lista que tengo desde la terminal, ahora tendré que revisar mi archivo de texto y eliminar manualmente la extensión de cada nombre de archivo (hay más de mil) y esto va a llevar mucho tiempo. hay una manera mas facil? ¿Puedo hacer que la terminal muestre una lista de nombres de archivos sin sus extensiones para poder copiarlos y pegarlos en una lista? ¿O puedo eliminar las extensiones de estos archivos, luego enumerarlos en la terminal y copiar sus nombres? ¿Hay otra manera? Confundido aquí. No soy programador, solo diseño de sitios web.

Espero que alguien pueda ayudar con esto. ¡Gracias a todos!

Respuesta1

Tomado deDesbordamiento de pila:

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

Intenté marcarlo como duplicado pero no funcionó.

Una de mis propias soluciones dado que conocemos las extensiones de archivo.

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

Así que busque todos los archivos en lugar de los directorios - type fy luego ejecútelos basenamepara cada uno. Le -spermite especificar un sufijo conocido para eliminar.

Otra solución alternativa:de la UB

Respuesta2

Si tiene su lista de archivos en el archivo "in.txt", ejecute este script para obtener la lista de archivos sin la extensión en "out.txt":

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

Respuesta3

¿Usas vi(o vim)? Si lo hace, dado que ya tiene los nombres de los archivos JPEG en un archivo de texto, la forma más sencilla puede ser editar ese archivo con vi/ vimy escribir

:%s/\.jpg$//

que dice, en cada línea del archivo, busque .jpglo que ocurre al final de una línea, elimínelo y reemplácelo por nada. Si hay algunas líneas que no terminan en .jpg, está bien; serán ignorados (omitidos). Si tiene varios nombres de productos (nombres de archivos) por línea, como en

        hammer.jpg              screwdriver.jpg         wrench.jpg

simplemente omita el $y agregue gy diga

:%s/\.jpg//g

que eliminarátodoapariciones de .jpg, incluso si no están al final de una línea.

información relacionada