我有一个包含多个文件夹和66GB文件的文件夹。 (.doc / .docx / .xls / .xlsx / .msg等。)
我需要一个循环命令,它将在文件正文和/或标题中的关键字的整个目录结构中递归搜索,然后将找到的文件移动到一个单独的位置。
我已尝试过此命令,它可以在单个文件夹上运行,但是当我将-r添加到grep命令时,它会抓取整个文件夹,因为其中一个文件包含关键字搜索匹配。
for file in *
do
if grep -rq 'Pro*' "$file"
then
sudo mv "$file" /home/pdog/Downloads/testmv/
fi
done
我一直在研究过去24小时内这样做的方法,我根本无法弄清楚为什么整个文件夹也会被移动?
答案 0 :(得分:0)
尝试
for file in `grep -rl ...`
-l
(--files-with-matches
)只打印文件名,因此您最终应该完全按照自己的意愿收集所有匹配的文件。
编辑:要处理空格,请尝试以下方法:
OLDIFS="$IFS"
FILES=`grep -rl ...`
IFS="$OLDIFS"
for file in $FILES
do
...
done
答案 1 :(得分:0)
试试这个:
grep -irl "key word" * | xargs -n1 -I{} mv {} /home/pdog/Downloads/testmv/