在一个项目做windows附件迁移到linux上的时候,发现迁移过来的文件名上多了一个^符号,经过此符号不可显示,若要显式在命令行输入,则需要ctrl+M。
经过测试,非专业人员写了以下脚本用于批量去掉某一linux文件夹下文件名末尾含^符号。
原理:
1、查找某一目录及子目录所有文件及文件夹
2、找出文件夹,并列出所有该文件夹下的文件
3、判断查找到的文件名去掉^符号后与源文件名是否长度相等
4、长度相等的文件名则不处理,否则对其进行改名(即去掉^符号)。
mvfile.sh
#!/bin/sh
fall=$(du -a|awk '{print $2}')
count=0
for dirfile in $fall;
do
count=$(($count+1))
if [ -d $dirfile ]; then
dirfile2=$dirfile/
for ffile in $(ls $dirfile);
do
ffile2=$ffile
mm=$(echo $ffile2|tr -d "\r")
if [ "$ffile" != "$mm" ];then
mv $dirfile2$ffile $dirfile2$mm;
fi
done
fi
done