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

そういう処理についてを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

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*