0

私は以下のような異なるルートにいくつかのファイルを持っています:

./a/b/c/test.h
./d/e/f/g/h/abc1.c
./i/j/k/l/m/n/o/p/hello.log
...

そして、それぞれのファイル名だけを取得したいと思います。つまり、「 test.h 」 、「abc1.c」、 「 hello.log 」を取得したいのです。

ルートの深さが不確かなので、awkは私の問題を解決できないかもしれません。誰かがこれを手伝ってくれますか?

4

3 に答える 3

2

basename次のコマンドを使用できます。

while read line
do
basename $line
done < "myfile"
于 2012-05-10T06:44:40.960 に答える
0
awk -F"/" '{print $NF}' file_name
于 2012-05-10T08:57:33.347 に答える
0

basename多くの場合、これを行う方法ですが、AWKでこれを行う方法は次のとおりです。

filename=./i/j/k/l/m/n/o/p/hello.log
echo "$filename" | awk -F/ '{print $NF}'

別:

awk -v filename="$filename" 'BEGIN {len = split("/", filename, a); print a[len]}'

純粋なBashで:

echo ${filename##*/}
于 2012-05-10T08:53:40.917 に答える