私は小さなUNIXコマンドラインの問題で立ち往生しています。
コピーを取得する必要があるウェブサイトフォルダー(4gb)がありますが、.php、.html、.js、および.cssファイル(わずか数百kb)のみを取得します。
私は理想的には、フォルダ全体をZipまたはtarする方法がありますが、サブフォルダ構造を保持しながら特定のファイル拡張子のみを取得する方法があると考えています。これは可能ですか?もし可能なら、どのように?
Zip全体を実行してから特定のファイルを除外してみましたが、少し過剰に思えました。
私はちょっとUNIXを始めたばかりです。
どんなアイデアでも大歓迎です。
Webサイトフォルダーに切り替えて、実行します
Zip -R foo '*.php' '*.html' '*.js' '*.css'
Webサイトフォルダーの外部からこれを実行することもできます。
Zip -r foo website_folder -i '*.php' '*.html' '*.js' '*.css'
find
とgrep
を使用してファイルリストを生成し、それをZip
にパイプすることができます。
例えば.
find . | egrep "\.(html|css|js|php)$" | Zip -@ test.Zip
(-@
は、Zipにstdinからファイルリストを読み込むように指示します)
これは私がそれをどうやってやったかですが、ghostdog74のバージョンも好きです。
tar -czvf archive.tgz `find test/ | egrep ".*\.html|.*\.php"`
正規表現に追加することで、拡張機能を追加できます。
Nickの答えは好きでしたが、これはプログラミングサイトなので、Antを使用してこれを行うのはなぜですか。 :)
次に、パラメータを入力して、さまざまなタイプのファイルを圧縮できます。
find(GNU)を使用してすべてのphp、htmlなどのファイルを検索することができます。
find /path -type f \( -iname "*.php" -o -iname "*.css" -o -iname "*.js" -o -iname "*.ext" \) -exec tar -r --file=test.tar "{}" +;
その後、ジップアップすることができます
パターン/式に基づいてファイルを新しいフォルダーにコピーするシェルスクリプトを記述し、内容を圧縮してからフォルダーを削除できます。さて、それの実際の構文については、あなたに任せてください:D。