zipコマンドとrmコマンドでワイルドカード文字*がなぜそんなに違うのですか?

zipコマンドとrmコマンドでワイルドカード文字*がなぜそんなに違うのですか?

私は私のためにいくつかのファイル操作を実行するスクリプトを書いた。*特定の種類のすべてのファイルに関数を適用するためにワイルドカード演算子を使用していますが、理解できない点があります。unzipこれらのフォルダにすべてのファイルを入れることができます。

unzip "*".zip

ただし、後ですべてのzipファイルを削除するには、次の手順を実行する必要があります。

rm *.zip

つまり、引用符は必要ありません。一方、*(「ファイルの不一致」警告を表示)だけを与えると、解凍は機能しません。

なぜ違うの?私にとってこれはまったく同じ仕事のようです。それともワイルドカードを間違って使用しているのでしょうか?

ワイルドカードについてUnixではこれを深く掘り下げないでください。rm私の文書ではzip何も見つかりません。

私はMac(Yosemite)で端末を使用しています。

ベストアンサー1

状況をとてもよく説明してくれましたね。パズルの最後の部分は、unzip基本的にワイルドカードを処理できることです。

http://www.info-zip.org/mans/unzip.html

議論

ファイル[.zip]

...

ワイルドカード式は、一般的なUnixシェル(sh、ksh、csh)でサポートされている式に似ており、次のものを含めることができます。

* 0個以上の文字シーケンスと一致します。

*ワイルドカードを引用すると、シェルがワイルドカードを拡張するのを防ぎ、シェルがワイルドunzipカードを確認し、独自のロジックに従って拡張を処理できるようにします。

rm一方、ワイルドカードはサポートされていません。それ自体したがって、ワイルドカードを引用すると、rmファイル名で文字通りアスタリスクを検索するように指示されます。

unzip *.zipこれがうまくいかない理由は、unzip構文が複数のzipファイルをまったく受け入れないためです。複数の引数がある場合、2番目以降の引数はアーカイブのファイルになると予想されます。

解凍 [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] ファイル [.zip] [ファイル...] [-xx ファイル...] [-d exdir]

おすすめ記事