文件名带有多个中英文(),导致执行shell命令时报错,如何解决?

文件名带有多个中英文(),导致执行shell命令时报错

整体加双引号不行

img

加单引号也不行

img

a.txt文件是啥内容

一下是网上的内容看有没有用:

在linux中,如果文件名中包含英文括号"()". 需要先对括号进行处理。在 "(" 和 ")" 前加上"".

()、(())、[]、[[]]、{}是shell脚本中的保留字符。用shell脚本处理文件名包含英文括号的文件,也会报错。

也要先对文件名进行处理,中文的括号是没问题的。

我知道问题的原因了,是因为反引号的stat 命令在获取参数(文件名)时,会因为文件名带空格读成两个参数;如果文件名添加双引号传入,stat会将./"a(9))(( sdf.txt"作为一个参数,但是会自动添加一层单引号,变成stat -c %Y './"a(9))(( sdf.txt"',导致命令无法执行。
解决方法还没想到