我正在尝试移动所有小于1GB的目录。我正在尝试使用此命令:
du -h -d 1 -t -1G | xargs -0 mv -it /destination/dir/
但是我收到一条错误消息:
mv: cannot stat [...] File name too long
非常感谢帮助:)
答案 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/