今天做了个小实验,由于自己的考虑不全面,导致了大问题的产生!

因为此问题我在全网几乎都未找到满意的答案,所以现在打算分享出来!


问题原因:

#ls 
1.txt 2.txt 3.txt
#find . -type f |xargs -i mv {} {}.bak

在根目录下有三个.txt的文档,我想一次性把它更改为 1.txt.bak  2.txt.bak  3.txt.bak

结果不小心使用了如上#find的那条命令!

结果导致整个根目录下所有的文件(包括隐藏文件)全部添加了.bak

wKioL1k2OXuCOe5YAAAvL0Km9gw127.png

重启系统后一定会出现问题!!!

尝试了很多次均失败告终,Goole上面也没有发现一个很好的解决方案!

之后想起了写个小的脚本,搞定,结果写错了,多亏了铭哥(Linux大神)帮忙指正,给出了solution!分享如下:

#for f in `find . -type f -name "*.bak"`; do f2=`echo $f|sed -r 's/.bak$//'`; echo $f2;mv $f $f2;  done

总结一下吧:

使用此命令,千万不能在根目录下直接操作!,保险起见,一定要输入特定的后缀名!

例如:

#find . -name '*.txt'| xargs -i mv {} {}.bak