私はすべての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/
。