移动小于 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/
我正在尝试移动所有小于 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/