shell - 拡張子 - パスからファイル名を取得する




シェルスクリプト 拡張子 判定 (4)

Perlソリューション:

perl -F/ -ane 'print $F[@F-1]' your_file

また、あなたはsedを使うことができます:

sed 's/.*[/]//g' your_file

私は以下の構造を持つファイルfile.txtを持っています:

./a/b/c/sdsd.c
./sdf/sdf/wer/saf/poi.c
./asd/wer/asdf/kljl.c
./wer/asdfo/wer/asf/asdf/hj.c

どのようにしてパスからcファイル名だけを得ることができますか? つまり、私の出力は

sdsd.c
poi.c
kljl.c
hj.c

awkを使ってsimpyを実行することができます。

フィールドセパレータFS = "/"と$ NFを設定すると、すべてのレコードの最後のフィールドが出力されます。

awk 'BEGIN{FS="/"} {print $NF}' file.txt

または

awk -F/ '{print $NF}' file.txt

または、このようにカットアンドユニックスのコマンドレヴで行うことができます

rev file.txt | cut -d '/' -f1 | rev


sedを使う:

$ sed 's|.*/||g' file
sdsd.c
poi.c
kljl.c
hj.c

最も単純なもの( $NFは現在の行の最後の列です):

awk -F/ '{print $NF}' file.txt

bashとパラメータ拡張を使用して:

while read file; do echo "${file##*/}"; done < file.txt

basename bash

while read file; do basename "$file"; done < file.txt

出力

sdsd.c
poi.c
kljl.c
hj.c






cut