无法将每个“文件”重命名为“file.text”(使用 xargs)

无法将每个“文件”重命名为“file.text”(使用 xargs)

我收到了一项任务,要求对文本文件执行以下命令:

  1. 从文件中选择每个第二个字段
  2. 排序并选择前 3 个value唯一
  3. value.text重定向 stderr 时 打印每个内容

我带来的是

cut cities.txt -f1 | sort| uniq | head -3 | xargs rename "s/*/*.text/" * | xargs cat 2>error.txt

但这会产生错误:

Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE / at (user-supplied code).  

我也尝试用 来做这件事mv * *.text,但是它不起作用,说mv: target 'Germany' is not a directory,其中“德国”是 s 列表中的最后一个值value

我对这些命令中的任何一个都可以接受,但如果能解释一下为什么它们都不起作用(以及如何使它们起作用),我会更加感激。

答案1

以防有人偶然发现这个问题:John1024 对这个问题的评论是正确的解决方案,但有一点需要注意 - 尝试打印出不存在文件的内容所生成的错误消息是由生成的xargs rename "s/.*/$&.text/",因此如果您需要将错误消息重定向到另一个文件,您必须附加2>error.textrename命令中,而不是写另一个| xargs cat 2>error.txt

相关内容