そのエラーメッセージに関する情報に基づいて、引用符をエスケープすることがここでの本当の問題であるかどうかはわかりません.
最終的に何をしようとしているのですか?この問題を回避するには、おそらく少し異なる方法があります。特定の「最終更新日」の日付を持つファイルの数を数えようとしているようです。これは正確ですか?もしそうなら、それを行うためにの出力を使用しないことを強くお勧めしls
ます。出力はプラットフォーム間で一貫性がなく、バージョン間で変わることさえあります。このfind
ユーティリティは、この種のものにはるかに適しています。
代わりに次のようにしてみてください。
dir=/mnta2/gvt/Interfaces/output/BI/sent/
pattern="*.?${vDiaAnterior}*"
time= # Fill this in based on the "last modified" time that you're looking for
find $dir -iname "$pattern" -mtime $time -exec printf '.' \; | wc -c
追加の変数を使用して省略できます。それらは、Web ページでコードを読みやすくするためだけに存在します。
これにより、指定されたワイルドカード パターンに一致する名前と、指定したものと一致する「最終変更」時刻を持つすべてのファイルが、指定されたディレクトリで検索されます。見つかった一致ごとに、コードprintf '.'
(標準出力に 1 つのドットを出力する) が実行されます。 wc
次に、ドット文字の数をカウントします。これは、見つかった一致するファイルの数に等しくなります。この方法の利点は、プログラム間 (シェルと の間を含むls
) でパイプ処理する必要があるデータの量を最小限に抑えることです。 find
は、シェルがワイルドカードを展開して結果を に渡すことを要求する代わりに、ワイルドカード マッチングを内部で処理しls
ます。wc
また、1 つの長い行の代わりに、一致するファイルごとに 1 文字のみを送信しています。ls
試合ごとの出力。これにより、「引数リストが長すぎます」というエラーが発生する可能性が低くなります。