bash脚本无法正确比较带有[和]的文件名

品牌42

我有一个处理文件的bash脚本。find是一个目录中的所有文件,并在另一个目录中搜索每个文件的名称。为此,它使用

"${myfiletobesearched}"

在脚本中。但是,如果文件名包含[或],即使该文件也存在副本,脚本也不会在第二个目录中找到它。我该怎么办,以使文件名被识别为相同?

我能够将问题缩小为一个例子。

myfile="My File [Official Awesome File].txt"
find ./ -name "${myfile}" -type f

不会给出任何输出,即使有一个具有该名称的文件也是如此。编写\[或类似的东西当然不是一种选择,因为myfile它来自检查目录。

这是脚本:https : //gist.github.com/Make42/5bdae5e4de32cff0d01c9486b09383ee

日深
myfile="My File [Official Awesome File].txt"
myfile=$(echo $myfile | sed -r 's/(\[|\])/\\\1/g')    
find ./ -name "${myfile}" -type f

你能检查一下是否行得通吗?

我期待这会改变的值myfile

myfile="My File \[Official Awesome File\].txt"

更好的方法是使用printf

myfile=$(printf '%q\n' "$myfile")

在您的特定示例中find,将是:

find ./ -name "$(printf '%q\0' "$myfile")" -type f

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash脚本无法处理文件名中的空格

来自分类Dev

带有:: before和:: after的文本无法正确居中?

来自分类Dev

ffmpeg:bash脚本中带有空格的文件名

来自分类Dev

PHP脚本无法正确写入文件

来自分类Dev

PHP脚本无法收集调用HTML页面的文件名

来自分类Dev

查找和xargs正确处理名称中带有空格的文件名

来自分类Dev

Bash脚本无法移动文件

来自分类Dev

Bash 脚本无法识别文件

来自分类Dev

BASH-传递给sFTP的带有空间的文件名无法正常解析

来自分类Dev

Expect脚本-发送带有变量的文件名

来自分类Dev

bash,删除文件名中带有字母的文件

来自分类Dev

带有和不带有shebang的bash脚本如何通过其文件名作为命令名执行?

来自分类Dev

无法删除带有“?”的文件 在文件名中

来自分类Dev

bash源命令和脚本文件名

来自分类Dev

Bash脚本无法正确调用其他脚本

来自分类Dev

名称中带有 # 的文件名无法下载

来自分类Dev

Shell脚本如何在单行中比较文件名和预期文件名但扩展名不同

来自分类Dev

比较变量与文件名bash

来自分类Dev

Bash中的文件名比较

来自分类Dev

bash脚本查找文件名中的日期比当前日期和时间新的所有文件

来自分类Dev

Bash脚本无法正确处理npm命令

来自分类Dev

Bash脚本无法在Docker容器中正确执行

来自分类Dev

AHK复制和粘贴脚本无法正确复制

来自分类Dev

在Bash脚本中解析文件名

来自分类Dev

脚本无法在带有IE的IFrame中运行-可以

来自分类Dev

带有Selenium的Python脚本无法单击按钮

来自分类Dev

Bash脚本无法运行

来自分类Dev

在“超越比较”中,如何排除带有特殊字符的文件名?

来自分类Dev

Bash脚本无法获取我给定的所有参数

Related 相关文章

热门标签

归档