1

私は csh/tcsh スクリプトの初心者なので、あなたの助けが必要です。問題は、ディレクトリ内のいくつかの通常のファイルを調べて、その内容に独自の名前を持つファイルを見つけなければならないことです。次のスクリプトは、パスをたどり、grep を使用してコンテンツ内のファイル名を見つけるサイクルです。確かに正しいのは $something:q です - ファイルを見つける必要があるパスの配列です。次の変数は、現在のファイルの名前のみである name です。例: /home/computer/text.txt (パス) および: text.txt (名前) そして、私の最大の問題は、コンテンツ内のファイルの名前を見つけることです。これに対して正しいgrepを書くのは非常に困難です。通過するファイルとディレクトリの名前がおかしいためです。それらのいくつかを次に示します。

/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/!_1
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/dam/$user/:e/'/-r
/home/OS/pocitacove/testovaci_adresar/z/test3/skusime/ taketo/   taketo
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/.-bla/.-bla/.a=b
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/.-bla/.-bla/@
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/.-bla/.-bla/:
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/.-bla/.-bla/'ano'

foreach paths ($something:q)
    set name = "$paths:t"
    @ number = (`grep -Ec "$name" "$paths"`)

    if ($number != 0) then
        echo -n "$paths "
        echo $number
    endif

    @ number = 0
end
4

1 に答える 1

1

grep -F を試してみましたか。入力が文字列リテラルであると想定され、エスケープ文字について心配する必要はありません。

于 2013-10-26T10:21:48.603 に答える