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 f
y luego ejecútelos basename
para cada uno. Le -s
permite 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
/ vim
y escribir
:%s/\.jpg$//
que dice, en cada línea del archivo, busque .jpg
lo 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 g
y diga
:%s/\.jpg//g
que eliminarátodoapariciones de .jpg
, incluso si no están al final de una línea.