gpt4 book ai didi

linux - grep 命令在 testdir 中工作但不在 "real"目录中

转载 作者:太空狗 更新时间:2023-10-29 11:20:39 25 4
gpt4 key购买 nike

我以为我找到了解决方案,因为该命令在我的测试目录中有效。

grep -H -e 'author="[^"].*' *.xml | cut -d: -f1 | xargs -I '{}' mv {} mydir/.

但是使用非测试目录中的命令该命令不起作用:这是错误消息:

grep: unknown option -- OUsage: grep [OPTION]... PATTERN [FILE]...Try `grep --help' for more information.

Not even this worked:

$ grep -H author *.xml

或者这个:

$ grep -H 'author' *.xml

(同样的错误信息)

我怀疑它与文件名或文件数量有关。我在非测试目录中有近 3000 个文件,而在我的测试目录中只有 20 个。在这两个目录中,几乎所有文件名都包含空格和“-”。

更多信息:

  • 我正在使用 Cygwin。
  • 不允许我更改文件名

最佳答案

试试这个(更新):

grep -HlZ 'author="[^"].*' -- *.xml | xargs -0 -I {} mv -- {} mydir/

解释(更新)

  • 在您的“真实”目录中,您有一个名称以 -O 开头的文件。您的 shell 扩展了文件列表 *.xml 并且 grep 将您的 - 起始文件名作为一个选项(无效)。 mv 也会发生同样的事情。如 info coreutilsCommon options 部分所述,您可以使用 -- 来分隔选项列表。 -- 之后的内容被视为操作数,而不是选项。

  • 使用 -l(小写 L)选项,grep 仅输出匹配文件的文件名,因此您不需要使用 剪切

  • 要正确处理每个奇怪的文件名,您必须在 grep 中使用 -Z 对,在 中使用 -0 >xargs.

  • 无需使用 -e,因为您的模式不是以 - 开头。

希望这会有所帮助!

关于linux - grep 命令在 testdir 中工作但不在 "real"目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3255918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com