web-dev-qa-db-ja.com

フォルダーは圧縮されていないがフォルダー内のファイルは圧縮されている場所を再帰的に抽出する方法。

私は知っているすべてを試してみましたが、この種のことに関する何十もの古いフォーラム投稿...何も機能していません。

既存のディレクトリを誤って削除した後、バックアップwordpressディレクトリをWebサーバーにアップロードしました。

しかし、なぜバックアップがアーカイブされているのかがおかしいように思えるので、きちんと解凍することができません。

せいぜい、私が現在使用している方法は、すべてのwordpressディレクトリ/サブディレクトリを解凍しますが、その中のすべてのファイルは「.gz」ファイル拡張子で圧縮されたままです。

このタスクを実行するサブフォルダーには500を超えるファイルがあります。

誰かが私にこのタスクを達成する方法について簡単で率直な答えを提供できますか?

私は次のコードで一部を得ることができますが、非圧縮のサブフォルダに再帰的に移動して、解凍する「.gz」ファイルを探しません(注...フォルダ/サブフォルダはすでに解凍されていますが、その中のファイルはありません) )。

for wordpress /。gz; do gunzip $ f; done *

1
adam

これは、findmanpage を参照)とその-execフラグで実現できます。 tarアーカイブの場合、次の行でトリックを行います。

find wordpress/ -type f -name *.tar.gz -exec tar -xf {} \;

Gunzipには次を使用できます。

find wordpress/ -type f -name *.gz -exec gunzip -k {} \;

両方の種類のファイルが存在する場合、この種類のビットを少し変更する必要があります。最初に-k(ファイルを保持)フラグを指定せずにgunzipを実行し、次にtarファイルの検索行を実行します。

find wordpress/ -type f -name *.gz -exec gunzip {} \;
find wordpress/ -type f -name *.tar -exec tar -xf {} \;
1
Videonauth

私に正しいとマークされた答えに追加するには...ここに友人が私にコピーするために投稿したコードと彼の指示があります。

public_html /ディレクトリから、次のコードオプションの両方を試しました。

wordpress/fの場合/.gz; gunzip $ fを実行します。完了*

上記は、複数のサブレベルを取得するには、wordpress/subdirectory/*。gz、wordpress/subdirectory/subdirectory/...などのサブディレクトリを追加して何度も入力する必要があることを意味します.

最も簡単なオプションは以下のとおりです...最初にテストします

wordpress/-name "* .gz"を検索-exec ls -lh {} \;

ls -lhは何も壊しませんが、混乱するファイルを確認できます。ファイルが正しい場合は、ls -lhをgunzipに変更します。

wordpress/-name "* .gz"を検索-exec gunzip {} \;

1
adam

man findman xargsを読んで、次のようなことをしてください。

find wordpress -type f -iname '*.gz' -print0 |\
    xargs -0 -r -n 1 gunzip

テストするには、gunzipecho gunzipに置き換えます

0
waltinator