Используя результат команды Unix как целое число? - PullRequest
0 голосов
/ 05 февраля 2019

Я пишу код в программе cshell и хочу выполнить некоторые действия, если в каталоге имеется более одного типа файла.

Я пробовал что-то вроде этого:

if "$(find . -name '*_type1.DAT' | wc -l)"  >1 then 
        echo "TRUE"
else echo "FALSE"
endif

Где найти.Команда -name с wc -l, подсчитывает, сколько файлов с окончанием _type1.DAT файлов у меня есть.И я хочу, чтобы эта часть использовалась как целое число, чтобы сравнивать ее (если их больше 1) для выполнения какого-либо действия.

Кто-то знает, возможно ли это, или есть какая-нибудь идея лучше сделать это условнымутверждение?

1 Ответ

0 голосов
/ 25 марта 2019

Если вы можете избежать этого, не используйте csh .Если это устаревший код, вы должны использовать что-то вроде:

if ( `find . -name '*_type1.DAT' -printf "x\n" | head -2 | wc -l`  > 1) then 
        echo "TRUE"
else 
        echo "FALSE"
endif

Объяснение:

  • `xyz` выполняет команду xyz и захватывает выходные данныев строку.Это так же, как две альтернативы bash `xyz` и $(xyz).
  • -printf "x\n" обеспечивает печать только одной строки для каждой записи.Это напечатает одну строку, даже если какое-либо имя файла содержит символ новой строки.
  • head -2 заставит find выйти раньше, если имеется много файлов "*_type1.DAT".Это несовершенно, и find может продолжить обработку довольно большого количества строк, прежде чем он заметит, что его стандартный вывод был закрыт.
...