【问题标题】:Move output of Find command unix移动查找命令 unix 的输出
【发布时间】:2015-10-09 18:34:22
【问题描述】:

我正在学习unix编程,我想找到所有大小大于1M的文件并将它们打印到一个文件中。

这是我的代码

find. -size +1M -print0 | xargs -I -O '{}' mv '{}' files 

我发现的所有网站都将此称为正确的,但它不起作用。目前正在开发 ubuntu

【问题讨论】:

  • 在什么情况下不起作用?
  • 您的问题要求将它们打印到文件中。代码尝试移动。您真的要移动它们还是只想要一个包含所有大文件列表的文件?

标签: shell unix ubuntu


【解决方案1】:

您从找到的任何地方错误复制/错误输入了推荐。

  1. 第一个{}-I 的参数。

  2. -O 不是 xargs 的参数,您的意思是 -0(与 -print0 一起使用)。

  3. 您错过了find.(当前目录)之间的空格。

你会得到什么:

find . -size +1M -print0 | xargs -0 -I '{}' mv '{}' files

也就是说你根本不需要xargs,因为find可以直接执行命令。

find . -size +1M -exec mv {} files \+

在运行之前测试复杂的find 命令通常是个好主意。

单独使用find . -size +1M 只会打印匹配的文件。

使用

find . -size +1M -ok mv {} files \+

将导致find 在每次执行命令之前提示您。

【讨论】:

  • 我错过了在这里复制它,对不起,但和以前一样,它实际上什么也没做,没有错误,只是另一个 $ 期待或让我知道我可以写,它不会使用这些信息创建或更新文件
  • find . -size +1M 有输出吗?如果没有,则找不到任何匹配的文件。
  • 使用-ok版本时是否会收到提示?
  • 我是 unix 新手,我找不到 find 的 -ok 版本。你能详细说明一下吗?
  • 我的意思是我的回答中的find . -size +1M -ok mv {} files \+ 命令。你的find 可能没有-exec +,所以你可能需要使用find . -size +1M -ok mv {} files \;,或者我猜它可能根本不支持-ok。但我希望大多数(如果不是全部)版本的 Ubuntu 都支持这两个版本。
猜你喜欢
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
相关资源
最近更新 更多