移动小于 1G 的目录

Move directories less than 1G

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

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

但我收到一条错误消息:

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

帮助将不胜感激:)

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

无论如何,我建议使用 find:

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

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

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

du -Sb -t -1G | cut -f 2- | xargs -d "\n" mv -t /path/to/destination/