linux 文件 空格,Linux下对带空格的文件进行处理

Linux下命名对文件进行命名时是不推荐使用空格的。因为一些操作对带有空格的文件会略显麻烦。

如:

#创建带空格的文件的方法

#使用\对空格进行转义

touch tes\ t

#使用双引号

touch "tes t2"

同理:对带空格的文件进行删除,或者拷贝,移动等操作时也需要用转义或者添加双引号。

可是,如果要对大量的文件进行处理时,就会更显麻烦

假如:我们要将指定目录下的所有的带空格的文件找出,并将其空格修改为"-",该怎么做呢?

#查找根目录下的所有带空格的文件

find / -name "* *"

find命令: 在指定目录下查找文件

-name:指定字符串作为寻找文件或目录的范本样式

"* *" :"*"为通配符,"*"代表任意多个任意字符,“* *”代表任意多个任意字符件之间存在空格的字符串

#用sed对获取出的数据进行处理

find /home -name "* *" | sed 's/[[:space:]]/-/g'

sed 's/x/y/g':其中s为替换的意思

g为对整行中所有与 字符串x 相同的串 替换成字符串 y

[[:space:]]:代表空格

以上命令对数据取出后,并不会直接修改文件本身。

但是我们实现的思想大概是这样的。

#!/bin/bash

#Program:

# It's testing!

#History:

# 2016.3.25 HH First release

echo -e "\n 本程序可以对目标下的带空格文件中的空格进行变换 \n"

read -p "请输入目标目录:" dir_o

#获取该目录下带空格的文件的路径

all_files=$(find ${dir_o} -name "* *")

#将原本的分隔符记录

old=${IFS}

#将内部域分隔符设置为换行

IFS=$'\n'

for file_name in ${all_files}

do

now_name=$(echo ${file_name} | sed 's/[[:space:]]/-/g')

mv "${file_name}" "${now_name}" && echo -e "成功转换${now_name}\n"

done

IFS=${old}

exit 0

如有BUG,欢迎指出~

联系方式:hh_0828@outlook.com

不胜感激~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值