только для файлов в каталоге, игнорируя подкаталоги:
expr $(du -Ss | cut -f1) / $(find /path/to/dir -maxdepth 1 -type f | wc -l)
Или считать все файлы включая файлы в подкаталогах:
expr $(du -s | cut -f1) / $(find /path/to/dir -type f | wc -l)
Использовать $()
вместо обратных галочек:
FILE1=$(find /mydir/ -name "\.\$abc\$*namehere*.zip*" | sort -rn | head -1)
ln -s "$FILE1" .
echo "$FILE1"
Проблема состоит в том, что, так как Вы включаете имя своего файла в двойные кавычки, удар разворачивает его так это
\.\$abc\$*namehere*.zip*
расширен до
\.namehere*.zip*
Это - одна из многих причин, почему обратные галочки удерживаются от использования и $()
должен всегда предпочитаться.
echo "\.\$abc\$*namehere*.zip*"
\.namehere*.zip* ben@crystal:~ $ повторяют $ (эхо "\.\$abc\$ *namehere*.zip*") \. $abc$ *namehere*.zip* </пред> по тому, как Вы должны $file двойной кавычки на ln, на эхе это не имеет значения. – hildred 25.11.2013, 08:55bash
не должен делать этой вещи. Я думаю, что это - любой ошибка вbash
или преднамеренное отклонение от мобильности. Обратную косую черту нужно рассматривать буквально в замене команды backquoted - которым нужно съесть"quotes"
поскольку Вы говорите - если не сопровождается$
`
'\', когда это становится кавычкой. Это - указанное поведение POSIX так или иначе: pubs.opengroup.org/onlinepubs/9699919799/utilities / … – mikeserv 28.04.2014, 16:46