根据条件移动文件

根据条件移动文件

任何人都可以帮助我找到满足我的要求的解决方案。

要求是我必须编写一个 shell 脚本,该脚本将扫描目录并读取进入该目录的每个文件,并搜索以(如“AB00732614”)开头的字符串它将搜索包含 AB* 的所有文件,然后它将移动文件到另一个目录。

答案1

假设字符串AB-etc。是的一部分内容要移动的文件的数量:

find /path/to/dir -type f -exec grep -qE 'AB[0-9]{8}' {} \; -exec mv -i {} /path/to/destination/ \;

这用于find查找/path/to/dir.对于每个文件,grep将查看它是否包含与扩展正则表达式(后跟八位数字的AB[0-9]{8}字符串)匹配的任何内容。AB如果是,则该文件将移动到目录/path/to/destination/

如果目标目录中已存在与要移动的文件同名的另一个文件,则您必须确认是否要覆盖该文件。

答案2

您可以使用:

find . -type f -iname 'AB*' -exec mv -t ./another_directory/ {} \+

这里解释得很好:https://stackoverflow.com/a/5607677

相关内容