変数bashスクリプトの後にワイルドカードを使用する

変数bashスクリプトの後にワイルドカードを使用する

私はすべてのcsvファイルを毎月のファイルにマージするスクリプトを取得しようとしました。以下のスクリプトは機能せず、次のエラーが発生します。

awk: fatal: cannot open file `/ibv_ftp/merged/folder/file201910*.csv' for reading (No such file or directory)

以下は、スクリプトが正しく機能しない例です。すべての "file20191030.csv" ファイルの代わりに "file201910*.csv" ファイルを探します。毎日独自のプロファイルがあります。

確かに。私が経験している問題は、アスタリスクをワイルドカード文字として使用できないことです。ただし、ファイル名には使用されます。変数の後に呼び出すとうまくいかないようです。引用符を使用したり、使用しなかったり、アスタリスクの代わりに[01-31]や疑問符を使用するなど、さまざまな方法で変数を使用することがあります。すべてファイル名の一部として表示されます。

#  Defines the current year     
y=$(date +'%Y')
# Choose which months to be merged
for i in {06..10}
  do
  # Defines year and month
   ym=$(date +'%Y')"$i"
   # monthly
   awk 'FNR==NR||FNR>2' /ibv_ftp/merged/folder/file"$ym"*.csv > /ibv_ftp/merged/monthly/file"$ym".csv
done

スクリプトは、/ibv_ftp/merged/folder/file201910*.csv または file201910[01-31].csv または file201910??.csv を呼び出します。以前のスクリプトが機能します。次のように別のファイルを使用します。

today=$(date +'%Y%m%d')
echo $today
# daily

awk 'FNR==NR||FNR>2' /ibv_ftp/folder/iv1_"$today"_*.csv > /ibv_ftp/merged/daily/folder/file"$today".csv

この例では、ファイル名はiv1_20191030_111500.csvです(最後の部分はタイムスタンプです)。

ベストアンサー1

このエラーは、パターンに一致するものがないことを示します/ibv_ftp/merged/folder/file201910*.csv。 (たとえば、シェルがワイルドカード文字を拡張できない場合は、通常*これをリテラルとして残すためです。)

作業コードと呼ばれるのを見ると、ソースパターンは/ibv_ftp/folder/機能していないコードが使用する場所から始まります/ibv_ftp/merged/folder/

おすすめ記事