3

シェルプログラミング初心者です。現在、見つかったファイルを操作するスクリプトを作成しています。しかし、見つかったファイルの親ディレクトリの名前を取得する必要があります。例えば、

SEARCH_PATH=/home/test
for file in `find $SEARCH_PATH -name "pattern"`;
do
        echo $file;
done

検索パスには、ファイルパターンを持ついくつかのフォルダーがあり、

/home/test/type1/log/pattern
/home/test/type2/log/pattern
/home/test/type3/log/pattern

私がする必要があるのは、これらのファイルで「パターン」を見つけ、祖父母ディレクトリの名前を「タイプ」名にすることです...

4

3 に答える 3

2

ダーティでクイック:

kent$  dirname $(dirname "/home/test/type1/log/pattern")
/home/test/type1

ファイル名にno がない場合は/、sed、awk cut ... を使用することもできます。1 つの sed の例:

kent$  echo "/home/test/type1/log/pattern"|sed 's#/[^/]*/[^/]*$##'                                                                                                          
/home/test/type1

編集

タイプのみ:

ベース名とディレクトリ名:

kent$  basename $(dirname $(dirname "/home/test/type1/log/pattern"))                                                                                                        
type1

awkで:

kent$  echo "/home/test/type1/log/pattern"|awk -F'/' '$0=$(NF-2)'    
type1
于 2013-05-21T16:32:22.477 に答える