任何人都可以帮助我找到满足我的要求的解决方案。
要求是我必须编写一个 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/ {} \+