Me gustaría tomar un enfoque un poco diferente, en el que me gustaría probar que el nombre del archivo termina en .mp3
y la longitud de la t
variable es de 12 caracteres de largo antes de su procesamiento. Esto debe quilla de actuar sobre los archivos que no se ajustan al patrón y evitar tirar errores, aunque los errores en este caso debe ser no-fatal. Simplemente no me gusta innecesarios se obtienen.
Este es un ejemplo de ello en la secuencia de comandos de la forma:
#!/bin/bash
for f in *.mp3; do
t="$(awk '/_.*/ { match($0, /_.*/); print substr($0, RSTART + 1, RLENGTH - 7); }'<<<"$f")"
if [[ ${#t} -eq 12 ]]; then
touch -t "$t" "$f"
fi
done
Este es un ejemplo de la secuencia de comandos de una sola línea, aunque larga.
for f in *.mp3; do t="$(awk '/_.*/ { match($0, /_.*/); print substr($0, RSTART + 1, RLENGTH - 7); }'<<<"$f")"; if [[ ${#t} -eq 12 ]]; then touch -t "$t" "$f"; fi; done
Que puede ser reducido a:
for f in *.mp3; do t="$(awk '/_.*/ { match($0, /_.*/); print substr($0, RSTART + 1, RLENGTH - 7); }'<<<"$f")"; [[ ${#t} -eq 12 ]] && touch -t "$t" "$f"; done
Si usted realmente desea acortar aún más:
for f in *; do t="$(awk '/_.*/ { match($0, /_.*/); print substr($0, RSTART + 1, RLENGTH - 7); }'<<<"$f")"; touch -t "$t" "$f" 2>/dev/null; done
La forma anterior de un compuesto de comando no realiza ninguna comprobación de errores y redirige la salida de error de la touch
comando para no saturar la pantalla. Este formulario es correcta en este caso de uso como una malformación de los comandos de toque no va a ser fatal.
0 votos
¿Qué tipo de personajes hay realmente en
aaaa@XXXXXX(XXXXXXX)
, otro entonces@
,(
y)
sona...
yX...
¿sólo caracteres alfabéticos o caracteres alfanuméricos? Además, he visto tu pregunta ahora borrada que publicaste erróneamente como respuesta a otra pregunta,touch
(Sólo quiero estar seguro de que eso es lo que quieres).0 votos
Yer señor, soy yo... la muestra del nombre del archivo es - Chiama@800031141(800031141)_20160725093945.mp3 y me gustaría ejecutar un script para poner el valor del sello de datos descrito en el nombre del archivo en el parámetro "TOCAR" para cambiar la fecha de creación y modificación con esos datos. Por supuesto el número de fecha en el nombre del archivo debería ser correcto excepto los segundos que no son necesarios en el parámetro TOUCH.