0

我正在尝试移动小于 1GB 的所有目录。我正在尝试使用此命令:

du -h -d 1 -t -1G | xargs -0 mv -it /destination/dir/

但我收到一条错误消息:

mv: cannot stat [...] File name too long

帮助将不胜感激:)

4

2 回答 2

0

我不确定您为什么使用-0参数 toxargs因为它指定文件名由空字节而不是空格分隔。的输出du不包含任何空字节,因此整个输出将被视为单个文件名,从而导致您看到的错误。

无论如何,我建议使用find

find /path/to/source -type d -size -1024M -exec mv -it /path/to/destination {} +

如果您很高兴du已经产生了您想要的输出并且想要使用它,您可以添加-0开关以便它使用空字节分隔符,那么您当前的xargs命令应该可以工作。

于 2016-04-03T15:23:13.533 回答
0

所以这是一个满足我需求的解决方法。也许有人可以扩展它?无论如何,如果您不需要担心子目录,那么以下工作。

du -Sb -t -1G | cut -f 2- | xargs -d "\n" mv -t /path/to/destination/
于 2016-04-04T16:21:29.670 回答