私は以下のような異なるルートにいくつかのファイルを持っています:
./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は私の問題を解決できないかもしれません。誰かがこれを手伝ってくれますか?
basename
次のコマンドを使用できます。
while read line
do
basename $line
done < "myfile"
awk -F"/" '{print $NF}' file_name
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##*/}