cshのシェル内のパスからファイル名を抽出 - ファイルのリストから、
質問
のパスからファイル名を抽出する方法。私は、ファイルのリストを持っています。私はcshのシェルを使用していて、AWK、sedは、perlがインストールされています。
/ dfgfd / dfgdfg /ファイル名
私に与える必要があります。
ファイル名
私が試したベース名:
find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h'
| xargs grep -l pattern | xargs basename
と、それは私に次のエラーを与えます:
ベース名:あまりにもいくつかの引数 詳細については `ベース名--help」を試してみてください。
THX
解決
標準プログラムbasename
は、あなたが欲しいものを行います:
$ basename /dfgfd/dfgdfg/filename
filename
他のヒント
回避策のこの種のは私のために働きました。あなたはperlの持っていたので、これを実行しなければならないと述べました。これは、/(結果的に削除)何も最後まで、すべての空白以外のテキストを置き換えます。
find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h'
| xargs grep -l pattern | perl -pi -e "s/\S+\///g"
[OK]を、私はAWKを使って素敵な解決策を見つけます:
find $PROJECT_DIR -name '*.c' -o -name '*.cc' -o -name '*.h'
| xargs grep -l PATTERN | awk -F "/" '{print $NF}'
find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h' | xargs grep -l pattern
| xargs -n1 basename
このを試してみてください!!
引数として単一パスパラメータaccepetベース名として、私たちはそれを一つずつ分割するxargsのを強制します。
所属していません StackOverflow