【发布时间】:2019-11-12 08:46:21
【问题描述】:
我想将编号为 1995、1996 和 1997 的文件夹中的所有文件移动到不同的文件夹中。
我在此列表中找到的大部分内容都与移动包含任何模式的任何文件有关。我希望命令在目录中查找,扫描 .txt 文件的内容,一旦找到 1996,就将其放入 1996 目录中。
这意味着如果该命令在目录中查找,扫描 .txt 文件,并在第一行找到 1996 并在第十行找到 1995,它不会将文件放在 1996 和 1995 文件夹中。我希望它只将文件放在 1996 文件夹中。
grep -rl --null --include '*.txt' 1996 . | xargs -0 sh -c 'cp "$@" /folderpath' sh
这似乎将 1995 文件放入 1996 文件夹中,只是因为它在文件的某处包含 1995。
【问题讨论】:
-
我不明白。第一个文件包含什么?所以我得到的是:1)对于目录中的每个文件 2)您要检查文件是否在第一行包含数字 1995 3)如果包含,请将其放入 1995 文件夹中 4)重复步骤 2 和 3数字 1996 和 1997。对吗?
-
是的,你是对的。
标签: shell command-line grep xargs