操作系统:Kubuntu 22.04.4 LTS x86_64
detox 1.4.5
显示在上方:
neofetch --stdout |grep 'OS:'
detox -V
这是一个有毒文件名,以 s1 开头:
s1 Ä Ö Ü - ä ö ü Science & < > " 1 \ 2 ⁄ 3 | ? * (&&9&&&) ::::z.pdf
script1
被复制并粘贴到终端。
script1
输出对上述有毒文件名有效"$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
script1
有效,给出结果,一个已排毒的文件名。没有空格,也没有特殊字符:请参见下面所需的转换、重命名的文件名:
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
script2
不管用:
错误 = 没有这样的文件或目录
script2
自动检测新文件DIR1 = ~/Downloads
并script2
在访问时DIR1
最终运行
clamscan 以在测试期间检测病毒,FILE1
手动粘贴DIR1
以模拟下载。
各类引用结果:
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
script2
出现错误然后结果正常:
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 Ä Ö Ü - ä ö ü 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
这是什么detox
意思?
detox
= 清理文件名- 该
detox
实用程序重命名文件,使其
更易于使用。 - 它消除了空格和其他类似的烦恼。
- 它还将翻译或清理以 8 位 ASCII 编码的 Latin-1(ISO 8859-1)字符、以 UTF-8 编码的 Unicode 字符以及 CGI 转义字符。
inotifywait
= 使用 inotify 等待文件更改
inotifywait
inotify(7)
使用Linux的界面有效地等待文件的改变。- 它适合等待 shell 脚本对文件的改变。
- 它可以在事件发生时退出,也可以在事件发生时持续执行并输出事件。
如何在 Bash 脚本中排毒文件名而不发布任何错误?