цитируя проблему, когда трубопровод находит выход в 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 *(/)

  • поиск имен папок на основе списка, содержащегося в файле .txt
  • копирование нескольких файлов в несколько каталогов
  • Трубопровод нескольких строк в сценарии bash
  • Xargs для извлечения имени файла
  • Почему xargs пропускает первый аргумент при передаче в подоболочку?
  • почему вывод xargs -n2 применяется к тому же количеству аргументов, различающихся по каналам или с клавиатуры?
  • Найти -exec + vs find | xargs. Какой из них выбрать?
  • Объединить xargs -I с sed
  • Как выполнить выходную строку без замены команды bash?
  • basename не работает должным образом
  • Как я могу создать файл, который я получил из stdin без xargs
  • Linux и Unix - лучшая ОС в мире.