linux命令:批量将查找到的文件移动或者复制到其他目录并尽可能保持原文件的目录结构
2017-10-10 13:42
1606 查看
期望:不写shell文件,直接在命令行下即可执行的。
以例子说明
原文件:
移动目标:
步骤:
1.查找出满足条件的文件,并先创建目标目录
find /root/ -maxdepth 5 -name '*.log' -exec echo {} \;|sed "s/\/root\//\/root\/mv2\//g"|sed "s/[^/]*\.log//"|awk '{system("mkdir -p "$1" ")}'
2.查找出满足条件的文件,并移动文件至目标目录
find /root/ -maxdepth 5 -name '*.log' -exec echo {} {} \; |sed "s/ \/root\// \/root\/mv2\//g"|awk '{system("mv "$1" "$2)}'
命令说明:功能将root目录下面的所有.log文件移动到mv2子目录中。
a.查找时一定要用绝对路径,否则mv和mkdir命令会出错
b.第2步中:sed替换符里有空格的
c.以上说的是移动,复制的话只要将mv改为cp即可
============================================================
同事提供的更好的方法:
for i in `find /tmp/ -maxdepth 5 -name '*.log' ;`; do j=${i%/*} ; mkdir -p ${j/tmp/tmp\/mv2}; mv $i ${j/tmp/tmp\/mv2};done
以例子说明
原文件:
移动目标:
步骤:
1.查找出满足条件的文件,并先创建目标目录
find /root/ -maxdepth 5 -name '*.log' -exec echo {} \;|sed "s/\/root\//\/root\/mv2\//g"|sed "s/[^/]*\.log//"|awk '{system("mkdir -p "$1" ")}'
2.查找出满足条件的文件,并移动文件至目标目录
find /root/ -maxdepth 5 -name '*.log' -exec echo {} {} \; |sed "s/ \/root\// \/root\/mv2\//g"|awk '{system("mv "$1" "$2)}'
命令说明:功能将root目录下面的所有.log文件移动到mv2子目录中。
a.查找时一定要用绝对路径,否则mv和mkdir命令会出错
b.第2步中:sed替换符里有空格的
c.以上说的是移动,复制的话只要将mv改为cp即可
============================================================
同事提供的更好的方法:
for i in `find /tmp/ -maxdepth 5 -name '*.log' ;`; do j=${i%/*} ; mkdir -p ${j/tmp/tmp\/mv2}; mv $i ${j/tmp/tmp\/mv2};done
相关文章推荐
- 查找到文件后复制到另一目录 目录结构保持不变
- Linux命令 find和mv的结合使用:查找文件,移动到某个目录
- linux(2)文件和目录管理(新增,删除,复制,移动,文件和目录权限,文件查找)
- SHELL编程练习-复制指定文件(保持文件所在目录结构)
- Java 批量反编译class文件,并保持目录结构
- windows xcopy 复制文件 且 保持目录结构
- Java 批量反编译class文件,并保持目录结构
- Java 批量反编译class文件,并保持目录结构
- 将本地的一个文件目录复制/移动到局域网上的其他机器上的方法
- java代码实现根据JSON文件进行批量文件重命名或者改目录结构
- [C#] 筛选复制文件并保持原有的目录结构
- linux命令复制指定文件或者指定目录下的全部文件到另一个目录中
- linux 批量替换文件内容及查找某目录下所有包含某字符串的文件(批量修改文件内容)
- 连带目录结构复制文件的参数
- bash , 查找当前目录,文件大于1024kb ,移动到新的目录中,如果没有这个目录,就创建
- DOS 查找所有MP3文件复制到另一个目录
- ubuntu 查找含有特定字符的文件并复制到指定目录
- 一天一linux命令(12) which whereis locate find 查找文件和目录
- Linux下用find查找并复制指定文件到指定目录下
- github上传文件时,目录、文件的创建、复制、删除和移动等操作