【问题标题】:Unix - Move folder where containing files match a nameUnix - 移动包含文件匹配名称的文件夹
【发布时间】:2016-11-06 15:19:16
【问题描述】:

我想知道如何根据每个文件夹中文件的文件名将多个文件夹移动到另一个文件夹。 我的意思是,假设我有大量文件夹,每个文件夹的名称都以“文件夹*”开头,每个文件夹包含 3 个文件。具体来说,其中一个文件包含一个字符串,例如可能是“-100”、“-200”或“-300”。

我想根据这个字符串移动包含文件的文件夹,并将它们放在一个名为'string'的文件夹中。例如,要将包含字符串“-100”的文件的每个文件夹放入文件夹“FOLDER1”中,我正在尝试类似:

查找文件夹* -name '100' -exec mv {} 文件夹* FOLDER1

但它返回 -bash: /usr/bin/find: Argument list too long.

如何在每一步都传递更少的参数来查找,这样我就不会得到这个。

提前致谢。

最好的。

【问题讨论】:

  • 不太清楚你要做什么,你能举一个你有/想要的前后目录结构的例子吗?
  • 对不起!帖子有点晦涩难懂。我在一个包含大量文件夹的路径中,这些文件夹的名称以文件夹 * 开头(每个文件夹包含 3 个文件,其中一个可以包含字符串“-100”、“-200”或“-300”)和另一个称为 FOLDER1(空)。我想将包含字符串“-100”的文件的每个文件夹依次移动到FOLDER1,这样我就可以根据包含文件的文件名对文件夹进行分类。问题是我在执行 find folder -name '100' -exec mv {} folder* FOLDER1* 时收到 Argument list too long 错误

标签: macos unix


【解决方案1】:

使用您的示例,并在包含所有文件夹的最顶层文件夹中运行,我相信您需要的是:

grep -rlw folder* -e "-100" | xargs -I % mv % FOLDER1

【讨论】:

  • 非常感谢您的回答!但在传递所有文件名列表folder* 时,我仍然收到Argument list too long 错误到 grep 中,和 find 一样……
猜你喜欢
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
  • 2017-04-16
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
相关资源
最近更新 更多