私は私のためにいくつかのファイル操作を実行するスクリプトを書いた。*
特定の種類のすべてのファイルに関数を適用するためにワイルドカード演算子を使用していますが、理解できない点があります。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]