Поиск нескольких вхождений определенного символа в tcsh

Я пытаюсь найти количество определенных типов файлов, которые имеют «_» в имени файла.

Я большой новичок, поэтому мой синтаксис выглядит в данный момент;

foreach txt ( 'ls *.txt') set n=0 if(grep _ txt) then @ n = n+1 endif end 

Это не работает, так как мой оператор if неверен, но я не уверен, как определить, если txt-файл имеет «_» в имени файла, а затем увеличивайте n на 1.

3 Solutions collect form web for “Поиск нескольких вхождений определенного символа в tcsh”

Один из способов сделать это – использовать возможности globbing оболочки, а не использовать grep.

 set n=0 foreach txt (*_*.txt) @ n++ end 

Синтаксис для «if grep», если вам нужно, по другим причинам:

 if ( { grep -q _ $var } ) then ... endif 

( -q говорит grep, чтобы быть спокойным и ничего не распечатывать).

Чтобы получить количество имен файлов с определенным символом:

 set n=`ls *.txt | fgrep -c _` 

Это будет печатать только имена файлов, у которых есть символ, и затем подсчитать количество возвращаемых записей. В tcsh вам нужно префикс присваивать с помощью set .

Вы можете использовать команду find в сочетании с wc чтобы получить количество файлов с именем _ :

 set n=`find [path] -maxdepth 1 -name "*_*.txt" | wc -l` 

Замените [path] на каталог, который вы хотите найти.

  • Как установить неограниченный размер в файл истории для tcsh?
  • Как оболочка знает дома (дома)?
  • tcsh - код эха-побега для выхода
  • Как достичь переменной косвенности (обратитесь к переменной, имя которой хранится в другой переменной) в tcsh
  • Как указать аргументы для возврата всех файлов точек, но не. а также ..?
  • Игнорировать полные строки с помощью sed
  • Если вы измените переменную среды в другой оболочке, она изменится или останется неизменной в других оболочках?
  • tcsh: введите 2-значные часы в строке
  • как заставить команду tcsh promt показать количество заданий LSF?
  • Как получить часть имени пути и присвоить его переменной?
  • Почему руководство для команды «где» недоступно
  • Linux и Unix - лучшая ОС в мире.