我正在尝试移动小于 1GB 的所有目录。我正在尝试使用此命令:
du -h -d 1 -t -1G | xargs -0 mv -it /destination/dir/
但我收到一条错误消息:
mv: cannot stat [...] File name too long
帮助将不胜感激:)
我不确定您为什么使用-0
参数 toxargs
因为它指定文件名由空字节而不是空格分隔。的输出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/