linux 文件名改成asc,Linux对文件中的特殊字符进行替换

参考资料

开始全部替换脚本

运行效果

开始单个文件替换脚本

单个文件替换效果如下

参考资料

https://stackoverflow.com/questions/5800035/how-to-replace-nul-in-vi

中片段解析为:

That symbol represents a NULL character, with ASCII value 000.

You could try:

:%s/\%x00/ /g

https://blog.csdn.net/a14206149/article/details/52595092

http://vim.1045645.n5.nabble.com/search-for-null-td1194026.html

可替换以下的特殊字符

4f9f0a605deb8987b66cb54c0ca00a50.png

开始全部替换脚本

# cat asciiReplaceScriptAll.sh

#!bin/sh

# 特殊字符查看表

# https://blog.csdn.net/xfg0218/article/details/80901752

echo  "参数说明"

echo -e "\t 把此脚本复制到带有特殊字符的文件夹下运行此脚本即可把全部文件进行替换,例如:sh asciiReplaceScript.sh"

echo

echo -e "\t 转换开始...... \n "

# 设置脚本开始时间

starttime=`date +'%Y-%m-%d %H:%M:%S'`

# 特殊字符的集合,28是特殊字符的10进制代码

soh=`echo 1 | awk '{printf("%c", $1)}'`

stx=`echo 2 | awk '{printf("%c", $1)}'`

etx=`echo 3 | awk '{printf("%c", $1)}'`

eot=`echo 4 | awk '{printf("%c", $1)}'`

enq=`echo 5 | awk '{printf("%c", $1)}'`

ack=`echo 6 | awk '{printf("%c", $1)}'`

bel=`echo 7 | awk '{printf("%c", $1)}'`

bs=`echo 8 | awk '{printf("%c", $1)}'`

ht=`echo 9 | awk '{printf("%c", $1)}'`

lf=`echo 10 | awk '{printf("%c", $1)}'`

vt=`echo 11 | awk '{printf("%c", $1)}'`

ff=`echo 12 | awk '{printf("%c", $1)}'`

cr=`echo 13 | awk '{printf("%c", $1)}'`

so=`echo 14 | awk '{printf("%c", $1)}'`

si=`echo 15 | awk '{printf("%c", $1)}'`

dle=`echo 16 | awk '{printf("%c", $1)}'`

dc1=`echo 17 | awk '{printf("%c", $1)}'`

dc2=`echo 18 | awk '{printf("%c", $1)}'`

dc3=`echo 19 | awk '{printf("%c", $1)}'`

dc4=`echo 20 | awk '{printf("%c", $1)}'`

nak=`echo 21 | awk '{printf("%c", $1)}'`

syn=`echo 22 | awk '{printf("%c", $1)}'`

etb=`echo 23 | awk '{printf("%c", $1)}'`

can=`echo 24 | awk '{printf("%c", $1)}'`

em=`echo 25 | awk '{printf("%c", $1)}'`

sub=`echo 26 | awk '{printf("%c", $1)}'`

esc=`echo 27 | awk '{printf("%c", $1)}'`

fs=`echo 28 | awk '{printf("%c", $1)}'`

gs=`echo 29 | awk '{printf("%c", $1)}'`

rs=`echo 30 | awk '{printf("%c", $1)}'`

us=`echo 31 | awk '{printf("%c", $1)}'`

del=`echo 127 | awk '{printf("%c", $1)}'`

# 循环把文件下的所有文件取出来

for replaceFile in  `ls *`

do

# 去除此脚本文件

if [ $replaceFile = $0  ];then

continue;

fi

echo -e "\t 文件" $replaceFile "替换开始...."

# 单个文件处理的额开始时间

single_time=`date +'%Y-%m-%d %H:%M:%S'`

# 单个文件替换开始

sed -i  -e 's/[\x0]//g' -e 's/'$soh'//g' -e 's/'$stx'//g' -e 's/'$etx'//g' -e 's/'$eot'//g' -e 's/'$enq'//g' -e 's/'$ack'//g' -e 's/'$bel'//g' -e 's/'$bs'//g' -e 's/'$lf'//g' -e 's/'$vt'//g' -e 's/'$ff'//g' -e 's/'$cr'//g' -e 's/'$so'//g' -e 's/'$si'//g' -e 's/'$dle'//g' -e 's/'$dc1'//g' -e 's/'$dc2'//g' -e 's/'$dc3'//g' -e 's/'$dc4'//g' -e 's/'$nak'//g' -e 's/'$syn'//g' -e 's/'$etb'//g' -e 's/'$can'//g' -e 's/'$em'//g' -e 's/'$sub'//g' -e 's/'$esc'//g' -e 's/'$fs'//g' -e 's/'$gs'//g' -e 's/'$rs'//g' -e 's/'$us'//g' -e 's/'$del'//g' -e 's/'$'//g'  $replaceFile

# 就算单个文件耗时

single_endtime=`date +'%Y-%m-%d %H:%M:%S'`

single_start_seconds=$(date --date="$single_time" +%s);

single_end_seconds=$(date --date="$single_endtime" +%s);

echo -e "\t 文件" $replaceFile "替换结束,耗时:"$((single_end_seconds-single_start_seconds))"s"

echo -e "\n"

done

echo -e "\t 全部文件转换结束......"

# 全部文件替换的总耗时

endtime=`date +'%Y-%m-%d %H:%M:%S'`

start_seconds=$(date --date="$starttime" +%s);

end_seconds=$(date --date="$endtime" +%s);

echo -e "\t 脚本总耗时:"$((end_seconds-start_seconds))"s"

# 退出脚本

exit

运行效果

[root@sggp ascii]# sh  asciiReplaceScriptAll.sh

参数说明

把此脚本复制到带有特殊字符的文件夹下运行此脚本即可把全部文件进行替换,例如:sh asciiReplaceScript.sh

转换开始......

文件 asciiReplaceScriptSimple.sh 替换开始....

文件 asciiReplaceScriptSimple.sh 替换结束,耗时:0s

文件 asciiTest1.log 替换开始....

文件 asciiTest1.log 替换结束,耗时:0s

文件 asciiTest2.log 替换开始....

文件 asciiTest2.log 替换结束,耗时:0s

文件 asciiTest.log 替换开始....

文件 asciiTest.log 替换结束,耗时:0s

文件 xiaoxu.sh 替换开始....

文件 xiaoxu.sh 替换结束,耗时:0s

全部文件转换结束......

脚本总耗时:0s

开始单个文件替换脚本

#!bin/sh

# 特殊字符查看表

# https://blog.csdn.net/xfg0218/article/details/80901752

echo  "参数说明"

echo -e "\t 此脚本会替换文件中的特殊字符,第一个参数是带有特殊字符的文件"

echo -e "\t 例如: sh asciiReplaceScriptSimple.sh  asciiFile.log"

echo

# 对输入参数进行校验

if [ ! -n "$1" ];then

echo -e "\t 请输入需要替换的文件...."

exit

fi

echo -e "\t 转换开始......"

starttime=`date +'%Y-%m-%d %H:%M:%S'`

# 特殊字符的集合,28是特殊字符的10进制代码

soh=`echo 1 | awk '{printf("%c", $1)}'`

stx=`echo 2 | awk '{printf("%c", $1)}'`

etx=`echo 3 | awk '{printf("%c", $1)}'`

eot=`echo 4 | awk '{printf("%c", $1)}'`

enq=`echo 5 | awk '{printf("%c", $1)}'`

ack=`echo 6 | awk '{printf("%c", $1)}'`

bel=`echo 7 | awk '{printf("%c", $1)}'`

bs=`echo 8 | awk '{printf("%c", $1)}'`

ht=`echo 9 | awk '{printf("%c", $1)}'`

lf=`echo 10 | awk '{printf("%c", $1)}'`

vt=`echo 11 | awk '{printf("%c", $1)}'`

ff=`echo 12 | awk '{printf("%c", $1)}'`

cr=`echo 13 | awk '{printf("%c", $1)}'`

so=`echo 14 | awk '{printf("%c", $1)}'`

si=`echo 15 | awk '{printf("%c", $1)}'`

dle=`echo 16 | awk '{printf("%c", $1)}'`

dc1=`echo 17 | awk '{printf("%c", $1)}'`

dc2=`echo 18 | awk '{printf("%c", $1)}'`

dc3=`echo 19 | awk '{printf("%c", $1)}'`

dc4=`echo 20 | awk '{printf("%c", $1)}'`

nak=`echo 21 | awk '{printf("%c", $1)}'`

syn=`echo 22 | awk '{printf("%c", $1)}'`

etb=`echo 23 | awk '{printf("%c", $1)}'`

can=`echo 24 | awk '{printf("%c", $1)}'`

em=`echo 25 | awk '{printf("%c", $1)}'`

sub=`echo 26 | awk '{printf("%c", $1)}'`

esc=`echo 27 | awk '{printf("%c", $1)}'`

fs=`echo 28 | awk '{printf("%c", $1)}'`

gs=`echo 29 | awk '{printf("%c", $1)}'`

rs=`echo 30 | awk '{printf("%c", $1)}'`

us=`echo 31 | awk '{printf("%c", $1)}'`

del=`echo 127 | awk '{printf("%c", $1)}'`

# 替换开始

sed -i  -e 's/[\x0]//g' -e 's/'$soh'//g' -e 's/'$stx'//g' -e 's/'$etx'//g' -e 's/'$eot'//g' -e 's/'$enq'//g' -e 's/'$ack'//g' -e 's/'$bel'//g' -e 's/'$bs'//g' -e 's/'$lf'//g' -e 's/'$vt'//g' -e 's/'$ff'//g' -e 's/'$cr'//g' -e 's/'$so'//g' -e 's/'$si'//g' -e 's/'$dle'//g' -e 's/'$dc1'//g' -e 's/'$dc2'//g' -e 's/'$dc3'//g' -e 's/'$dc4'//g' -e 's/'$nak'//g' -e 's/'$syn'//g' -e 's/'$etb'//g' -e 's/'$can'//g' -e 's/'$em'//g' -e 's/'$sub'//g' -e 's/'$esc'//g' -e 's/'$fs'//g' -e 's/'$gs'//g' -e 's/'$rs'//g' -e 's/'$us'//g' -e 's/'$del'//g' -e 's/'$'//g'  $1

echo -e "\t 转换结束......"

endtime=`date +'%Y-%m-%d %H:%M:%S'`

start_seconds=$(date --date="$starttime" +%s);

end_seconds=$(date --date="$endtime" +%s);

echo -e "\t 脚本耗时:"$((end_seconds-start_seconds))"s"

# 退出脚本

exit

单个文件替换效果如下

[root@sggp ascii]# sh  asciiReplaceScriptSimple.sh xiaoxu.sh

参数说明

此脚本会替换文件中的特殊字符,第一个参数是带有特殊字符的文件

例如: sh asciiReplaceScriptSimple.sh  asciiFile.log

转换开始......

转换结束......

脚本耗时:0s

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值