цитируя проблему, когда трубопровод находит выход в xargs

У меня есть каталог со следующими подкаталогами, т.е. если я запустил $ tree -L 1

 . ├── 2007-06-20_to_2008-10-01 ├── 2008-07-21_to_2008_08_12-Nokia 2mp ├── 2009-11-01_to_2011-01-10 - All iphone Pics ├── 2011-01-01 palliser-pics ├── 2011-03-10_to_2011-04-12-few iphone pics b4 switch to HTC └── 2011-03-31-to-2013-05-01 ALL HTC pics-backup-prior-to-factory-reset 

Я бы хотел, чтобы количество дисковых пространств занимало эти 2 каталога и все их содержимое.
например, желаемый результат, что-то вроде

 2.7G 2007-06-20_to_2008-10-01 200MB 2008-07-21_to_2008_08_12-Nokia 2mp 1.3G 2009-11-01_to_2011-01-10 - All iphone Pics 667MB 2011-01-01 palliser-pics 2.3G 2011-03-10_to_2011-04-12-few iphone pics b4 switch to HTC 123MB 2011-03-31-to-2013-05-01 ALL HTC pics-backup-prior-to-factory-reset 

Поэтому я пытался:

 find . -maxdepth 1 -type d | xargs du -h 

но из-за того, что некоторые имена каталогов содержат пробелы, каждая строка из вывода find производит много xargs WORD перед передачей xargs , можно ли исправить это?

Я знаю, что основная причина проблемы вызвана пробелами в файлах, и я буду использовать rename для исправления, если не могу найти способ получить дискиз с помощью du , find и xargs

One Solution collect form web for “цитируя проблему, когда трубопровод находит выход в xargs”

find | xargs find | xargs всегда следует использовать в сочетании с -print0 и -0 , как объясняется в man find :

  -print0 True; print the full file name on the standard output, followed by a null character (instead of the newline character that -print uses). This allows file names that contain newlines or other types of white space to be correctly interpreted by programs that process the find output. This option corresponds to the -0 option of xargs. 

Таким образом, вы хотите:
find . -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0 du -sh
или без find и с достаточно развитой оболочкой ( zsh ):
print -N *(/) | xargs -0 du -sh
приводя вас к еще проще:
du -sh *(/)

  • Пустые строки при выполнении «grep | xargs "в" find -exec "
  • xargs внутри цикла for
  • Как копировать рекурсивно все файлы не старше 1 дня?
  • cmd2 `cmd1` vs cmd1 | xargs cmd2
  • zsh "echo SomeText >> ** / filename" в других оболочках
  • удалять файлы после вставки в tarball
  • Почему эта команда xargs не работает?
  • Как сделать `head` и` tail` на вход с нулевым ограничением в bash?
  • Расшифровывать файлы, зашифрованные с помощью gpg, с помощью xargs
  • find + xargs: строка аргумента слишком длинная
  • Обработка временных меток вывода tcpdump в режиме реального времени
  • Linux и Unix - лучшая ОС в мире.