移动小于1G的目录

时间:2016-04-03 13:48:16

标签: linux shell xargs mv du

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

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

但是我收到一条错误消息:

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

非常感谢帮助:)

2 个答案:

答案 0 :(得分:0)

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

无论如何,我建议使用find

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

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

答案 1 :(得分:0)

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

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