大家好,我想把文件夹以及子文件夹里所有.jpg后面有?sign的图片修改文件名称,类似于20180405095522_44158.jpg?sign=924ca3be4ffca6c5fbad798e7e643ab4&t=5ac588d3这样的文件名称修改成20180405095522_44158.jpg。如果没有带?sign的图片不用管,请问用linux命令代码是怎么写,由于刚接触linux,百度也没找方法。

解决方案 »

  1.   

    可以通过管道连接shell和perlfor file in `ls|grep -P "jpg\?sign"`;do echo $file|perl -we 'while (<STDIN>){chomp;rename "$_","$1" if /^(.+)jpg\?sign/;}';done
      

  2.   

    用python应该不难完成
      

  3.   

    for i in `find /home/user  -name *jpg\?s*` ; do b=${i%%\?*}  && mv $i $b;done
    用find 解决子目录问题并指定绝对路径,通过字符串截取去掉?号后面的字符,做一个mv操作 即修改文件名。
      

  4.   


    find 好像找带符号的文件不好使,条件可以换成  `find /home/user  -name "*jpg*sign*"`
      

  5.   

    #!/bin/bash
    for file in `find /root/chongmingming/ -type f -name '*?sign*'` 
    do
    newfile=`echo $file|cut -f 1 -d "?"`
    mv $file $newfile
    done
    学习中,测试了一下这个,是好使的。