Tengo archivos
foo.mp3
bar baz.mp3
bar baz 2.mp3
¿Qué comando generaría lo siguiente?
foo
bar \ baz
bar \ baz \ 2
Sé que ls -1b
maneja los escapes, pero ¿cómo corto .mp3
el final?
ls -1 | cut -d "." -f 1
corta el primer período y todo lo que sigue. Trata los períodos como un separador y muestra solo texto en el primer campo, antes de que ocurra el separador. Si sus nombres de archivo tienen solo una extensión como máximo (cero o un período, total), esto puede funcionar (así de simple).
ls -1b | cut -d "." -f 1
reemplaza los espacios con "\" en Linux. Sin embargo, tenga en cuenta que también tiene la etiqueta Unix en esta pregunta. Y, la opción "-b" en "ls" no es necesariamente compatible con todas las variaciones de Unix. (No se admite tanto como -l (largo) o -1 (columna única).
.
).ls -la
todavía muestra la información, solo que no hay partes de nombre de archivoLo tengo trabajando con
ls -1b | sed s/\.mp3//
fuente
ls -1 | sed s/\\.mp3$//
funciona bien El $ ayuda a eliminar ".mp3.zip" de ser excluido, y dos barras invertidas deben usarse si su shell usa la barra invertida como un carácter de escape, lo cual es común en Unix. La única desventaja es que sed es compatible con menos Unix diferentes, pero sed es bastante común y vale la pena intentarlo. ¿Estr
una opción viable también?