現在作業中の場所のファイル名の一部を抽出しようとしていますが、予想される出力とは機能しません。
サンプル:
ls -a *0728*dat | ls -a *0728*dat |種類
amnbmnbm_jnjmnm_sd_07282019_14_13_17.dat
amnbmnb_kjhkj_07282019_11_23_22.dat
njnkjnjk_AbnBCBB_DE_07282019_07_09_04.dat
ファイル名からファイル部分、病棟日の左側のすべての項目(アンダースコア(_)を含む)を抽出して変数に割り当てたいと思います。
希望の出力:
変数ファイルは、forループに渡すために値を保持するために必要なファイルです。
文書:
amnbmnbm_jnjmnm_sd_
amnbmnb_kjhkj_
njnkjnjk_AbnBCBB_DE_
for file_name in "${file[@]}"
do
echo " file_name=$file_name"
done
希望の出力:
amnbmnbm_jnjmnm_sd_
amnbmnb_kjhkj_
njnkjnjk_AbnBCBB_DE_
ベストアンサー1
おそらく:
for file_name in *0728*dat
do
printf '%s\n' "${file_name%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]_[0-9][0-9].dat}"
done
これにより、各ファイル名の末尾に8桁、アンダースコア、2桁、アンダースコア、2桁、アンダースコア、2桁、。などのパターンが削除されます.dat
。