¿Cómo desintoxicar nombres de archivos en un script bash sin publicar errores?

¿Cómo desintoxicar nombres de archivos en un script bash sin publicar errores?

SO: Kubuntu 22.04.4 LTS x86_64
desintoxicación 1.4.5

Para mostrar arriba:

neofetch --stdout |grep 'OS:'
detox -V

Aquí hay un nombre de archivo tóxico, comienza con s1:

s1 Ä Ö Ü - ä ö ü Science & < > " 1 \ 2 ⁄ 3 | ? * (&&9&&&) ::::z.pdf

script1Fue copiado y pegado en la Terminal. script1la salida funciona en el nombre de archivo tóxico anterior "$FILE1":

filename_before_detox='s1 Ä Ö Ü - ä ö ü Science & < > " 1 \ 2 ⁄ 3 | ? * (&&9&&&) ::::z.pdf'
filename_after__detox= s1_A_A-Aoe-A_A_pp_A_Science_and_1_2_a_3-and_and_9_and_and_and-z.pdf

script1funciona, dando como resultado un nombre de archivo desintoxicado. Sin espacios ni caracteres especiales: consulte el nombre del archivo convertido y renombrado deseado a continuación:

s1_A_A-Aoe-A_A_pp_A_Science_and_1_2_a_3-and_and_9_and_and_and-z.pdf

script1:

clear 
DIR1=$HOME/Downloads    # DIR1=/home/x/Downloads 
cd $DIR1
ls -alF s1*    # List all filenames starting with s1
FILE1='s1 Ä Ö Ü - ä ö ü Science & < > " 1 \ 2 ⁄ 3 | ? * (&&9&&&) ::::z.pdf'
  detox -s iso8859_1    "$FILE1" 
# detox -s iso8859_1 -v "$FILE1" # v=verbose 
ls -alF s1*    # List all filenames starting with s1

script2no está trabajando:

error = No existe tal archivo o directorio

script2detecta automáticamente un nuevo archivo DIR1 = ~/Downloadsy, script2al estar en acceso, DIR1eventualmente ejecutará
clamscan en busca de virus durante la prueba y FILE1se pega manualmente DIR1para simular una descarga.

Varios resultados de citas:

detox -s iso8859_1  "$FILE1"    # No such file or directory
detox -s iso8859_1 '"$FILE1"'   # No such file or directory
detox -s iso8859_1 ""$FILE1""   # posting errors then ok result 

script2

clear 
DIR1=$HOME/Downloads    # DIR1=/home/x/Downloads 
inotifywait -q -m -e close_write,moved_to --format '%w%f' "$DIR1" |while read FILE1
do 
ls -alF s1*             # List all filenames starting with s1
detox -s iso8859_1 ""$FILE1"" 
ls -alF s1*             # List all filenames starting with s1
done

script2tiene errores entonces buenos resultados:

s1_A_A-Aoe-A_A_pp_A_Science_and_1_2_a_3-and_and_9_and_and_and-z.pdf

Pero hay muchos errores:

rw-rw-r-- 1 x x 1153263 Mar 13 11:36 's1 Ä Ö Ü - ä ö ü Science & < > " 1 \ 2 ⁄ 3 | ? * (&&9&&&) ::::z.pdf'
/home/x/Downloads/s1: No such file or directory
Ä: No such file or directory
Ö: No such file or directory
Ü: No such file or directory
-: No such file or directory
ä: No such file or directory
ö: No such file or directory
ü: No such file or directory
Science: No such file or directory
&: No such file or directory
<: No such file or directory
>: No such file or directory
": No such file or directory
2: No such file or directory
⁄: No such file or directory
3: No such file or directory
|: No such file or directory
(&&9&&&): No such file or directory
::::z.pdf: No such file or directory
-rw-rw-r-- 1 x x 1153263 Mar 13 11:36 s1_A_A-Aoe-A_A_pp_A_Science_and_1_2_a_3-and_and_9_and_and_and-z.pdf
-rw-rw-r-- 1 x x  1153263 Mar 13 11:36 s1_A_A-Aoe-A_A_pp_A_Science_and_1_2_a_3-and_and_9_and_and_and-z.pdf
-rw-rw-r-- 1 x x 1153263 Mar 13 11:36 s1_A_A-Aoe-A_A_pp_A_Science_and_1_2_a_3-and_and_9_and_and_and-z.pdf

¿Que detoxsignifica?

  • detox= limpiar nombres de archivos
  • La detoxutilidad cambia el nombre de los archivos para que sea
    más fácil trabajar con ellos.
  • Elimina espacios y otras molestias similares.
  • También traducirá o limpiará caracteres Latin-1 (ISO 8859-1) codificados en ASCII de 8 bits, caracteres Unicode codificados en UTF-8 y caracteres de escape CGI.

inotifywait= esperar cambios en los archivos usando inotify

  • inotifywaitespera eficientemente cambios en los archivos usando inotify(7)la interfaz de Linux.
  • Es adecuado para esperar cambios en archivos desde scripts de shell.
  • Puede salir una vez que ocurre un evento o ejecutar y generar eventos continuamente a medida que ocurren.

¿Cómo desintoxicar nombres de archivos en un script bash sin publicar errores?

información relacionada