
Tengo muchos archivos que se parecen a este:
56.mp3?referredby=rss
Lo que quiero hacer es eliminarlos ?referredby=rss
para que queden así:
56.mp3
¿Cómo haría esto?
Respuesta1
Si tienes Perl rename
, es tan fácil como
rename 's/\?referredby=rss//' ./*referredby=rss
Con util-linux
rename
:
rename '?referredby=rss' '' ./*referredby=rss
Respuesta2
Aparte de escapar del ?
(que tiene un significado especial en las expresiones globales), esto realmente no es diferente de cambiar el nombre de cualquier otro archivo: por ejemplo, podría usar un bucle de shell simple
for f in *.mp3\?referredby=rss; do mv -- "$f" "${f%\?*}"; done
¿Dónde ${f%\?*}
hay una expansión de parámetros de shell que elimina la coincidencia de elementos finales más corta?\?*