ファイルリストを見つけて単一のzipファイルに圧縮するには?

ファイルリストを見つけて単一のzipファイルに圧縮するには?

私のプロジェクトで使用したすべてのファイルを収集したいと思います。私はfindコマンドを使用しており、ファイルのリストを見つけてその結果をzipコマンドに渡して、一致するすべてのファイルを含む単一のzipファイルを生成したいと思います。可能であれば、便宜のためです。しかし、バグがあって動作しないようです。

find /lmms/samples/ -name warp01*,JR_effect2k*,clean_low_key*,q_kick_2*,sticky_q_kick*,upright_bass*,pizzi*,chorded_perc*,Tr77_kick*,Tr77_tom1*,Tr77_cym*,hihat_008a*,Hat_o.ds,Hat_c.ds,Kickhard.ds,Tr77_snare* -exec zip {} ~/Desktop/files.zip

出力は次のとおりです

find: missing argument to `-exec'

PS。

以下の回答で指摘されているエラーのいくつかを修正し、指示に従い、次のようにコード形式を再指定しました。

find ~/lmms/samples/ (-name warp01* -o -name JR_effect2k* -or -name clean_low_key* -or -name q_kick_2* -or -name sticky_q_kick* -or -name upright_bass*-or  -name pizzi* -or -name chorded_perc* -or -name Tr77_kick* -or -name Tr77_tom1* -or -name Tr77_cym* -or -name hihat_008a* -or -name Hat_o.ds -or -name Hat_c.ds -or -name Kickhard.ds -or  -name Tr77_snare*)  -exec zip -add  ~/Desktop/files.zip {} +

次のメッセージでまだ失敗しますbash: syntax error near unexpected token(「

括弧を削除するとエラーは削除されますが、アーカイブに1つのファイルしか追加されないようです。驚くべきことに、私のデスクトップでは見つからないようです!

 find ~/lmms/samples/ -name warp01* -o -name JR_effect2k* -or -name clean_low_key* -or -name q_kick_2* -or -name sticky_q_kick* -or -name upright_bass*-or  -name pizzi* -or -name chorded_perc* -or -name Tr77_kick* -or -name Tr77_tom1* -or -name Tr77_cym* -or -name hihat_008a* -or -name Hat_o.ds -or -name Hat_c.ds -or -name Kickhard.ds -or  -name Tr77_snare*  -exec zip  ~/Desktop/files.zip {} +
  adding: home/john/lmms/samples/drumsynth/tr77/Tr77_snare.ds (deflated 49%)

ベストアンサー1

-execfind2つの引数が必要です。実行するコマンドとコマンドが一致するたびに1回実行する必要があるか(;)、または実行ごとに多くのファイルを使用する必要があるか()を示すフラグ+

また、zipパラメータの向きが間違っています。

テストでもそうではありません-name。一度に1つのモードのみが必要です。複数のパターンを確認するには、("or")-nameを使用して複数のテストを組み合わせて-o括弧で囲む必要があります(ありがとう)シアンこれを指摘してください):

find /lmms/samples/ \( -name "warp01*" -o -name "JR_effect2k*" ... \) -exec ...

(シェルグロービングの問題を回避するには、各パターンを引用してください)。

全体的に名前テストを修正し、次findから始めると

-exec zip ~/Desktop/files.zip {} +

正しいことをする必要があります。

おすすめ記事