Каталог копии, но сбой, если файл уже существует в месте назначения

Это - улучшенная версия на основе ответа jabalv. Это работает с GNU, а также пространством пользователя BSD.

IFS='\n' du -sk -- * | sort -n | cut -f2 |
while read line ; do
  xargs du -sh "$line"
done

демонстрационный вывод:

4.0K  games
2.7M  local
6.7M  lib32
19M   sbin
152M  src
177M  include
321M  bin
2.2G  share
2.9G  lib

Чтобы инвертировать порядок сортировки и перечислить самые большие файлы и каталоги сначала, использовать sort -nr.

2
09.05.2014, 17:07
1 ответ
[116778]Linux

Если файл существует в Linux, то можно ошибиться, слегка взломав его с помощью GNU [117276]nohup[117277]. [117278]nohup[117279] перенаправляет [117280]/dev/null[117281] на [117282]stdin[117283], поэтому любые интерактивные подсказки игнорируются, но использование [117284]stdin[117285] расценивается как сбой.

Немного очистить:

По умолчанию [117886] nohup[117887] перенаправляет [117888] stdout[117889] на [117890] nohup.out[117891] и [117892] stderr[117893] на [117894] stdout[117895].

2> nohup.out[117897] также помещает [117898]stderr[117899] в файл.

[117900]&& rm || cat[117901] удалит ошибку или выдаст ошибку из [117902]nohup.out[117903] на ошибку. Вы можете добавить любую обработку ошибок вместо/включая [117904]cat[117905] или удалить все это и обработать [117906]$?[117907] как обычно.

  1. Вам нужно быть немного умнее в отношении местоположения временного файла, если вы используете его всерьёз ([117908]mktemp -d[117909])
  2. BSD
  3. На BSD вы можете перенаправить [117294]stdin[117295] на [117296]cp[117297], который будет рассматриваться как [117298]n[117299] и вернуть статус non 0.
  4. OSX

На OSX [117300]cp[117301] ведёт себя иначе, чем BSD, что удивительно, и возвращает статус non 0 с [117302]-n[117303] на пропущенном файле.

4
27.01.2020, 22:00

Теги

Похожие вопросы