ファイル名に "_"を含む特定の種類のファイルの数を見つけようとします。
foreach txt ( 'ls *.txt')
set n=0
if(grep _ txt) then
@ n = n+1
endif
end
ifステートメントが正しくないため、うまくいきませんが、txtファイルのファイル名に "_"があることを確認してから、nを1ずつ増やすように定義する方法がわかりません。
答え1
1つの方法は、grepの代わりにシェルのglobbing機能を使用することです。
set n=0
foreach txt (*_*.txt)
@ n++
end
他の理由で必要な場合、「if grep」構文は次のとおりです。
if ( { grep -q _ $var } ) then
...
endif
(-q
grepに静かにして何も印刷しないように指示します。)
答え2
特定の文字を含むファイル名の数を取得するには、次のようにします。
set n=`ls *.txt | fgrep -c _`
見つかった文字を含むファイル名のみを印刷し、返された項目の数を数えます。 tcshでは、割り当ての前に実行する必要がありますset
。
答え3
このコマンドを一緒に使用して、名前に含まれるファイルの数をfind
取得できます。wc
_
set n=`find [path] -maxdepth 1 -name "*_*.txt" | wc -l`
[path]
検索したいディレクトリに置き換えます。