这题是大一时候做过的,但是那时候才疏学浅,使用的方法很不好。
美女姐姐面试的时候,让我写一下这个脚本(可以用python,但是python有些函数不太记得是否标准库有提供),所以当时继续使用了大一时候的思路,写了个shell脚本。
function A:先都当文件夹删除空文件夹,$?判断上一条命令是否执行成功。不成功为非空文件夹或者文件。
接着判断是否是文件,文件则进行查找,拷贝操作。
文件夹的话,就cd之后 执行A()

但是这种方法是非常不好的,在linux里面rm/rmdir,这种删除操作要非常小心,特别如果你是root用户的话。
今天地震,在操场坐着玩,就想了想这个问题。

#!/bin/bash
#script:find_file.sh path re_find out_path
#email:natsuki@myclover.org
find "$1" -type f ! -size 0 | xargs grep "$2" -l | xargs -t -I {} cp {} "$3"/{}  2>/dev/null

find查找指定路径中大小非0的文件,在将结果作为参数列表,执行查找文件内容符合 re_find的,结果又作为参数列表,执行拷贝到指定的输出结果的路径下。