java文件名特殊符号_linux命令行下文件名中包含特殊符号如何的处理方法

问题描述

前面《Jenkins系列之-—07 实现SQL脚本批量执行》在实际运行过程中碰到如下问题

某次一模块SQL脚本执行完成后,再次执行还会运行,即备份执行完成的脚本这个功能没起作用,初步断定是脚本名中有某种特殊符号导致的

分析:

linux中碰到文件名中有空格的处理方法

① 使用引号将文件名括起来: touch "Me like yuh.mp3"

② 空格前使用连接符号""转义: touch Me\ like\ yuh.mp3 “\”

③ 下面脚本可将文件名中间的空格用下划线_替换(注意:并不能替换文件名后面的空格)如下所示

find . -type f -name "* *" -print |

while read name; do

na=$(echo $name | tr ' ' '_')

if [[ $name != $na ]]; then

mv "$name" "$na"

fi

done

文件名后面的空格

for file in *; do mv "$file" echo "$file" | tr ' ' '\n' ; done

for file in ' '; do mv "$file" echo "$file" | sed -e 's/ /n/g'; done

解决办法

sql文件执行完成在备份时,如果文件名中间有空格,将中间空格替换为_

在比较文件名是否一致时,兼容有空格的文件名

扩展--碰到文件名中有其他特殊字符如何处理

1. 最直接的办法,使用时候用绝对路径,如:touch ./tmp/Me like yuh.mp3

2. 不同类型特殊符号处理:

2.1 不需要处理的

具有加号(+),

有百分比(%)

有^

有大括号{}

有方括号[]

有得分(_)下

有等于(=)

有问号(?)

有逗号(,)

有冒号(:)

2.2 需要处理的

文件类型

处理方式

具有破折号(-)的文件

$ touch -- -abc.txt

具有HASH(#)的文件

$ touch '#abc.txt'

具有分号(;)的文件

$ touch ';abc.txt'

具有美元符号($)的文件

$ touch '$12.txt'

具有感叹号(!)的文件

$ touch '!12.txt'

具有符号(@)的文件

$ touch '@12.txt'

具有&符(&) 的文件

$ touch '&12.txt'

具有括号()的文件

$ touch '(12.txt)'

具有反斜线(\)$的文件

$ touch '\12.txt'

具有Chevrons <>的文件名

$ touch ''

2.3 其他类型

具有星号(*)的文件

不需要处理的,删除选时间需要注意

前倾斜的特殊情况

你不能创建一个文件名,其中包括正斜杠(/)直到你的文件系统错误。 没有办法逃脱前斜线。

所以,如果你可以创建一个文件,如“/12.txt’或’B / c.txt’,那么你的文件系统有错误或你有Unicode支持,它可以让你创建一个斜杠的文件。 在这种情况下,正斜杠不是真正的正斜杠,而是一个看起来像正斜杠的Unicode字符。

文件名中的点标记(。)

在文件名中包含引号(单引号和双引号) 要在文件名中加引号,我们必须使用交换规则。 也就是说,如果您需要在文件名中包含单引号,请用双引号将文件名括起来,如果您需要在文件名中有双引号,请用单引号括起来

文件名中的波浪号(〜)

在Linux中一些编辑器Emacs等创建该文件的备份文件进行编辑。 备份文件具有原始文件的名称以及文件名末尾的波浪号。 您可以有一个文件,其名称包括波浪号,在任何位置简单为:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值