Я не уверен, почему вы используете аргумент -0
для xargs
, поскольку это указывает, что имена файлов разделяются нулевыми байтами, а не пробелами. Результат du
не будет содержать никаких нулевых байтов, поэтому весь вывод будет рассматриваться как одно имя файла, что приведет к появлению ошибки, которую вы видите.
Во всяком случае, я предложил бы использовать find
:
find /path/to/source -type d -size -1024M -exec mv -it /path/to/destination {} +
Если вы счастливы, что du
уже производит вывод, что вы хотите, и хотите использовать его вместо этого, вы можете добавить переключатель -0
так, что использует разделители с нулевым байтом, тогда ваша текущая команда xargs
должна работать.
попробуйте добавить '-L 1' в xargs:' du -h -d 1 -t -1G | xargs -0 -L 1 mv -it/destination/dir/' – saeedgnu
Спасибо :) Я пробовал с' -L 1', но генерирует следующее сообщение об ошибке: 'mv: can not stat 'du -h -d 1 -t - 1G \ n ': Нет такого файла или каталога 'Я также пробовал с' -n1', но также дал мне сообщение об ошибке 'mv: invalid option -' h'' – nimrag