mv遇到空格和小括号文件引发的问题

最近整理一些文件遇到一件很纠心的事情,用了很多的方法,但均未成功将文件名中包含空格和括号的文件整理成功。问题如下:
在所要整理的文件夹中包含多个子文件夹而每个文件夹下面都有恼人的文件包含空格和小括号:
比如在当前Documents目录下有大致500多份文件其中百分之80是以abc (0).log或abcdef  ( 2 ).log,同时子目录也有可能是是/aa  bb/或/aaa bbb ccc/这类的,通过shell脚本来实现时,一旦到了含空格文件名的时候全部卡壳或是执行失败,用过sed, awk, rename可是到了mv $file $dest_fn的时候要么文件全部被mv到 /dev/null 或被重命名为(null).log这里用(null)表示文件名全部给删除了,要么就是文件是什么样子还是什么样子。代码块如下:
复制内容到剪贴板
代码:
#!/bin/bash# This is a test sample script
for i in `ls -iR|grep -E "[A-Za-z0-9]*.log|awk '{print $1}'`
do
name=`find . -inum $i"|awk -F '/' '{print $NF}`
stu_fn=$(echo $name|tr -d ' ', '\(', '\)')
mv "./$name" "./$stu_fn"
done
这里我把$path用当前文件夹所在位置代替了。
原先用过
复制内容到剪贴板
代码:
ls -iR|awk '{gsub(/[\(\)]/,"",$3);print "find . -inum " ,$1, "-exec mv {}",$2,$3,"\;"}'
提示line1 mv >>>错误
然后我把最后的$2删除,问题也同样是提示line1 mv >>>错误
通过不断的完善,终于完美解决这个问题。以下是代码块:
复制内容到剪贴板
代码:
#!/bin/sh

#  sample.sh
#  
find . -name "* (*)*"|while read name;do
s_fn=$(echo $name|tr -d ' ','\(','\)');
mv "$name" $s_fn;
done



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值