Bash forループにより、指定した拡張子のファイルを複数取得する。更に、拡張子なしファイル名等を取得する

 本記事では、表題のことをなす雛形コードを載せました。
下図は、その例で4つの処理結果をechoで表示したものです。上から順に1. 指定したディレクトリ内のcsvファイルのパスを取得、2. 拡張子なしのファイルパス、3. ベースネーム、4. ベースネームに新たな拡張子を付与

f:id:HK29:20210614224654p:plain

■本プログラム

#!/bin/sh

#csv_dirという名のディレクトリ内のcsvファイルを順に取得して色々する
for file_path in ./csv_dir/*.csv; do 
    basename_path="${file_path%.*}" # 拡張子なしのファイルパス
    fname=$(basename "$file_path" | cut -d. -f1) # ベースファイル名
    new_fname=${fname}.txt # ベースファイル名に拡張子を付与

    echo "#####"
    echo $file_path
    echo $basename_path
    echo $fname
    echo $new_fname

    cp $file_path ./${new_fname} # ファイルをカレントディレクトリへコピー
done

以上

<広告>