shell 批量处理目录下的文件(改名 删除)
2011-12-07 17:04
141 查看
大致说一下 所处理目录里的文件内容如下
20111130102504289.flv 20111130103705649.flv 20111130104629277.flv
执行完yamdi(处理视频的一种工具)这一步后是下面这种形式
tmp_20111130102555254.flv tmp_20111130103855301.flv
20111130102504289.flv 20111130103705649.flv
第二步删除的是以2011开头的这些文件 执行完得到结果如下
tmp_20111130102555254.flv tmp_20111130103855301.flv tmp_20111130104944916.flv
第三步就是把tmp开头的文件去掉tmp_这个字段变成如下形式
20111130102555254.flv 20111130103855301.flv 20111130104944916.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处理能力有关吧 脚本本身没有问题 记录下来主要就是学了怎么批量修改目录下的文件名
#########################################2014-03-03#####################################
使用xargs批量重命名文件名
[root@mail home]#ls *.sql
test.20121225.patch.sql test.20121225.revert.sql
将/home目录下所有.sql结尾的文件重名为test.20121225.patch.sql.bak test.20121225.revert.sql.bak
命令如下
[root@mail home]# 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
查询验证
[root@mail home]# ls *.bak
test.20121225.patch.sql.bak test.20121225.revert.sql.bak
############################################xargs########################################
本文出自 “十年一刻” 博客,请务必保留此出处http://liveforlinux.blog.51cto.com/3337218/736474
20111130102504289.flv 20111130103705649.flv 20111130104629277.flv
执行完yamdi(处理视频的一种工具)这一步后是下面这种形式
tmp_20111130102555254.flv tmp_20111130103855301.flv
20111130102504289.flv 20111130103705649.flv
第二步删除的是以2011开头的这些文件 执行完得到结果如下
tmp_20111130102555254.flv tmp_20111130103855301.flv tmp_20111130104944916.flv
第三步就是把tmp开头的文件去掉tmp_这个字段变成如下形式
20111130102555254.flv 20111130103855301.flv 20111130104944916.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处理能力有关吧 脚本本身没有问题 记录下来主要就是学了怎么批量修改目录下的文件名
#########################################2014-03-03#####################################
使用xargs批量重命名文件名
[root@mail home]#ls *.sql
test.20121225.patch.sql test.20121225.revert.sql
将/home目录下所有.sql结尾的文件重名为test.20121225.patch.sql.bak test.20121225.revert.sql.bak
命令如下
[root@mail home]# 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
查询验证
[root@mail home]# ls *.bak
test.20121225.patch.sql.bak test.20121225.revert.sql.bak
############################################xargs########################################
本文出自 “十年一刻” 博客,请务必保留此出处http://liveforlinux.blog.51cto.com/3337218/736474
相关文章推荐
- shell 删除目录下N天前的文件
- Linux 文件和目录管理之列出、删除、复制、移动及改名
- Linux 文件和目录管理之列出、删除、复制、移动及改名
- shell-删除目录下指定日期前的所有文件
- 使用shell脚本删除当前目录下.c文件对应的可执行文件
- shell删除当前目录及递归目录下文件指定字符串
- shell 递归遍历目录下的所有文件并统一改名的方法
- [代码审计]XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)
- Linux下使用Shell脚本删除一个目录下的所有子目录和文件
- shell字符串转日期,日期转字符串,判断字符串包含某个字符串,删除某个目录下的几天前的日志文件
- Linux 文件和目录管理之列出、删除、复制、移动及改名
- shell删除给定目录下的目录文件
- shell 定时删除某个目录指定格式文件(递归)
- linux下遍历目录和文件,删除过期天数目录或文件shell脚本
- 使用shell删除目录下几天前生成文件方法
- linux-shell命令之rm(remove)【删除文件或目录】
- 【Linux】Shell学习笔记之二——文件和目录管理(创建、删除、复制、查看)
- 使用shell巧妙高效的批量删除历史文件或目录
- Linux 文件和目录管理之列出、删除、复制、移动及改名
- shell脚本-某目录文件大于n时删除前m个文件