Предположит, что существует каталог «Foo», который содержит несколько файлов:Как хранить NUL-выход программы в сценарии bash?
ls foo:
1.aa 2.bb 3.aa 4.cc
Сейчас в Баше скрипте, я хочу, чтобы подсчитать количество файлов с определенным суффиксом «обув», и дисплей их, например:
SUFF='aa'
FILES=`ls -1 *."$SUFF" foo`
COUNT=`echo $FILES | wc -l`
echo "$COUNT files have suffix $SUFF, they are: $FILES"
проблема: если SUFF='dd'
, $COUNT
также равна 1
. После google причина, по которой я нашел, - это когда SUFF='dd'
, $FILES
- пустая строка, а не нулевой вывод программы, которая будет считаться одной строкой на wc
. Выход NUL может передаваться только через трубы. Так одно решение:
COUNT=`ls -1 *."$SUFF" foo | wc -l`
, но это приведет к команде ls
выполняется дважды. Поэтому мой вопрос: есть ли еще более элегантный способ достичь этого?
файл-имена заканчиваются 'Foo'? Можете ли вы дать одно такое имя образца? Вы также хотите рекурсивно искать в подкаталогах? – Inian
foo - это каталог. имена файлов заканчиваются на aa, bb, cc. Не нужно искать подкаталоги. – xlwang