bashでファイル名から拡張子のみを取得する(変数展開・sed・awk)
Pocket

そういう処理についてをTwitterで見かけたので、念のため備忘で残しておく。
まあ特に難しい事をせずとも、bashの変数展開やsed、awkで取得できる。面倒なので、とりあえずパイプで受け取った結果から拡張子のみを取得するコマンドを以下に記載する(特に変数展開の処理は、普通にスクリプト書くならこんなやり方しなくてもいいかと思うが…)。

Sponsored Links

find ./ -type f | xargs -I@ -n1 sh -c 'echo @ | (read X;echo ${X##*.})'
find ./ -type f | sed 's/.*\.//'
find ./ -type f | awk -F. '{print $NF}'
blacknon@BS-PUB-UBUNTU-01:~/test_d$ ls -la
合計 8
drwxrwxr-x  2 blacknon blacknon 4096  5月 15 01:19 .
drwxr-xr-x 24 blacknon blacknon 4096  5月 14 20:47 ..
-rw-rw-r--  1 blacknon blacknon    0  5月 15 01:19 sample.csv
-rw-rw-r--  1 blacknon blacknon    0  5月 15 01:19 sample.log
-rw-rw-r--  1 blacknon blacknon    0  5月 14 20:48 sample.txt
-rw-rw-r--  1 blacknon blacknon    0  5月 15 01:19 sample.xml
blacknon@BS-PUB-UBUNTU-01:~/test_d$ find ./ -type f | xargs -I@ -n1 sh -c 'echo @ | (read X;echo ${X##*.})'
log
txt
csv
xml
blacknon@BS-PUB-UBUNTU-01:~/test_d$ find ./ -type f | sed 's/.*\.//'
log
txt
csv
xml
blacknon@BS-PUB-UBUNTU-01:~/test_d$ find ./ -type f | awk -F. '{print $NF}'
log
txt
csv
xml

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*