-bash: /bin/mv: Argument list too long

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了-bash: /bin/mv: Argument list too long相关的知识,希望对你有一定的参考价值。

参考技术A 我的一个开发服务器在一个目录下包含数百万个文件。为了释放磁盘空间,我们决定将在连接到同一系统的另一个磁盘上创建的新文件夹移动到它们。尝试使用**mv 命令**移动文件时,收到以下错误。

> > -bash: /bin/mv: Argument list too long

“Argument list too long”错误,一般出现在我们给单个命令传递大量参数的时候。系统变量**ARG_MAX**定义了 shell 命令**中参数**的**最大字符长度**。

## 解决方案

快速解决方案是使用 xargs 命令行实用程序或带有 -exec ... 的 find 命令。这两个命令都将大命令分解为较小的命令,并无错误地完成作业。

- 将 find 与 xargs 结合使用 –

以下命令会将所有扩展名为 .txt 的文件移动到目标目录。

```

find . -name '*.txt' | xargs mv --target-directory=/path/to/dest_dir/

```

- 将 find 与 exec 一起使用——

您还可以使用 exec 来执行相同的任务。

```

find . -name '*.txt' -exec mv /path/to/dest_dir/ ;

```

上面的默认命令将递归导航到子目录。要将查找限制到当前目录,只能使用`-maxdepth`后跟限制数量到子目录。

```

find . -name '*.txt' -maxdepth 1 -exec mv /path/to/dest_dir/ ;

```

您可以`getconf ARG_MAX`在 shell 上使用命令找到最大限制。

以上是关于-bash: /bin/mv: Argument list too long的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu /usr/bin/sudo: Permission denied

Qt编译遇到 /usr/bin/ld: cannot find -lGL问题

linux中更改/home文件名的命令是啥?

Linux系统中给文件改名的命令是啥/?

loadLibrary Can't load '/usr/local/MATLAB/R2014b/bin/glnxa64/lib

usr/lib/怎么解决command-not-found:/usr/bin/sudo:解释器错误:没有那个文件