苏泽湛 发表于 2018-8-19 10:08:56

shell 批量处理目录下的文件(改名 删除)

  大致说一下 所处理目录里的文件内容如下
  20111130102504289.flv20111130103705649.flv20111130104629277.flv
  执行完yamdi(处理视频的一种工具)这一步后是下面这种形式
  tmp_20111130102555254.flvtmp_20111130103855301.flv
  20111130102504289.flv20111130103705649.flv
  第二步删除的是以2011开头的这些文件 执行完得到结果如下
  tmp_20111130102555254.flvtmp_20111130103855301.flvtmp_20111130104944916.flv
  第三步就是把tmp开头的文件去掉tmp_这个字段变成如下形式
  20111130102555254.flv20111130103855301.flv20111130104944916.flv

[*]  #!/bin/bash
[*]  #ls /opt/test/20111204_import
[*]  for x in `ls /opt/test/20111201_import`
[*]  do
[*]  yamdi -i $x -o tmp_$x -c "modify by mytv365.com"
[*]  done
[*]  cd /opt/test/20111201_import
[*]  rm -rf 2011*
[*]  echo "delete ok"
[*]  for file in `ls /opt/test/20111201_import`
[*]  do
[*]  mv $file `echo $file | sed 's/tmp_//g'`
[*]  done
[*]  echo "all is ok"
  说说 脚本执行过程中遇倒的问题 yamdi由于处理的目录里面文件数目过多 文件过大 shell有可能处理不过来 而直接调到第二步去可能是与shell处理能力有关吧 脚本本身没有问题 记录下来主要就是学了怎么批量修改目录下的文件名 http://blog.51cto.com/neweditor/editor/images/smiley/1.gif
  #########################################2014-03-03#####################################
  使用xargs批量重命名文件名
  #ls *.sql
  test.20121225.patch.sql test.20121225.revert.sql
  将/home目录下所有.sql结尾的文件重名为test.20121225.patch.sql.baktest.20121225.revert.sql.bak
  命令如下
  # ls *.sql |xargs -t -i mv {} {}.bak-t参数 回显命令
  mv test.20121225.patch.sql test.20121225.patch.sql.bak
  mv test.20121225.revert.sql test.20121225.revert.sql.bak
  查询验证
  # ls *.bak
  test.20121225.patch.sql.baktest.20121225.revert.sql.bak
  ############################################xargs########################################


页: [1]
查看完整版本: shell 批量处理目录下的文件(改名 删除)