Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

195
Views
Función Bash sanitize_file_name

Estoy tratando de encontrar una manera de desinfectar/filtrar nombres de archivos en un script Bash exactamente de la misma manera que funciona la función sanitize_file_name de WordPress. Tiene que tomar una cadena de nombre de archivo y escupir una versión limpia que sea idéntica a esa función.

Puedes ver la función aquí .

GNU bash, versión 4.3.11(1)-lanzamiento (x86_64-pc-linux-gnu)
Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-57-genérico x86_64)
Este es perl 5, versión 18, subversión 2 (v5.18.2) creado para x86_64-linux-gnu-thread-multi

Ejemplos de nombres de archivos de entrada
Estos pueden ser y, a menudo, son prácticamente cualquier cosa que pueda hacer un nombre de archivo en cualquier sistema operativo, especialmente Mac y Windows.

 This File + Name.mov Some, Other - File & Name.mov ANOTHER FILE 2 NAME vs2_.m4v some & file-name Alpha.m4v Some Strange & File ++ Name__.mp4 This is a - Weird -@ Filename!.mp4

Ejemplos de nombres de archivos de salida
Así es como la función sanitize_file_name de WordPress hace los ejemplos anteriores.

 This-File-Name.mov Some-Other-File-Name.mov ANOTHER-FILE-2-NAME-vs2_.m4v some-file-name-Alpha.m4v Some-Strange-File-Name__.mp4 This-is-a-Weird-@-Filename.mp4

No solo tiene que resolver estos casos, ha realizado las mismas funciones que la función sanitize_file_name o producirá archivos duplicados y no se actualizarán en el sitio.

Algunos pensamientos que he tenido son que tal vez pueda usar esa función de alguna manera, pero este servidor de codificación de video no tiene PHP, ya que es un servidor bastante pequeño y normalmente solo codifica videos y los carga. No tiene mucha memoria, potencia de CPU o espacio en disco, es un servidor de RAM de 512 MB de DigitalOcean. Tal vez de alguna manera pueda crear un script PHP remoto en el servidor web para manejarlo a través de HTTP, pero nuevamente, no estoy completamente seguro de cómo hacerlo a través de Bash.

Es demasiado complicado para mis habilidades limitadas de Bash, así que me pregunto si alguien puede ayudarme o sabe dónde está un script que ya hace esto. No pude encontrar uno. Todo lo que pude encontrar son secuencias de comandos que cambian espacios o caracteres especiales en guiones bajos o guiones. Pero esto no es todo lo que hace la función sanitize_file_name .

En caso de que tenga curiosidad, los nombres de archivo deben ser compatibles con esta función de WordPress debido a la forma en que este sitio web está configurado para manejar videos. Permite que las personas carguen videos a través de WordPress que luego se envían a un servidor de video separado para codificarlos y luego se envían a Amazon S3 y CloudFront para publicarlos en el sitio. Sin embargo, también permite agregar videos a través de Dropbox usando el complemento External Media (que en realidad está duplicando la carga del video con la sincronización de Dropbox ahora, pero ese es otro problema menor). Este servidor de video también se está sincronizando con una cuenta de Dropbox e incluye las carpetas en la lista blanca y tiene este script de Bash mirando una carpeta de Dropbox de VideoServer usando inotifywait que copia videos de ella a otra carpeta temporalmente donde el codificador de video los codifica. De esta manera, cuando actualicen los videos en su Dropbox, se volverá a codificar y actualizará automáticamente el video que se muestra en el sitio. Podrían simplemente cargar los archivos a través de WordPress, pero parece que no quieren o no saben cómo hacerlo por alguna razón.

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si tiene Perl instalado, intente con:

 #!/bin/bash function sanitize_file_name { echo -n $1 | perl -pe 's/[\?\[\]\/\\=<>:;,''"&\$#*()|~`!{}%+]//g;' -pe 's/[\r\n\t -]+/-/g;' } filename="Wh00t? it's a -- re@lly-weird {file&name} (with + Plus and__1% #of# [\$qRots\$!]).mov" cleaned=$(sanitize_file_name "$filename") echo original : "$filename" echo sanitised: "$cleaned"

El resultado es:

 original : Wh00t? it's a -- re@lly-weird {file&name} (with + Plus and__1% #of# [$qRots$!]).mov sanitised: Wh00t-it's-a-re@lly-weird-filename-with-Plus-and__1-of-qRots.mov

Mirando la función WP, esto la emula bastante bien.

about 4 years ago · Santiago Trujillo Report

0

Inspírate en la respuesta .

 EscapeFilename() { printf '%s' "$@" | perl -pe 's/[:;,\?\[\]\/\\=<>''"&\$#*()|~`!{}%+]//g; s/[\s-]+/-/g;'; }
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!