88

ディレクトリがあります。約 500K の .gz ファイルがあります。

そのディレクトリ内のすべての .gz を抽出し、.gz ファイルを削除するにはどうすればよいですか?

4

7 に答える 7

24

@techedemic は正しいですが、「.」がありません。現在のディレクトリに言及すると、このコマンドはすべてのサブディレクトリを通過します。

find . -name '*.gz' -exec gunzip '{}' \;
于 2015-03-17T09:56:07.387 に答える
19

明らかにこれを行う方法は複数あります。

    # This will find files recursively (you can limit it by using some 'find' parameters. 
    # see the man pages
    # Final backslash required for exec example to work
    find . -name '*.gz' -exec gunzip '{}' \;

    # This will do it only in the current directory
    for a in *.gz; do gunzip $a; done

他の方法もあると思いますが、おそらくこれが最も簡単です。

それを削除するにrm -rf *.gzは、該当するディレクトリで a を実行するだけです

于 2013-04-16T13:28:53.747 に答える
3

現在のディレクトリとそのサブディレクトリにあるすべての gz ファイルを抽出します。

 find . -name "*.gz" | xargs gunzip 
于 2015-01-06T13:35:28.690 に答える
3

単一のファイルを抽出する場合は、次を使用します。

gunzip file.gz

ファイルを抽出し、.gz ファイルを削除します。

于 2016-07-15T08:55:59.127 に答える
1
for foo in *.gz
do
  tar xf "$foo"
  rm "$foo"
done
于 2013-04-16T13:19:24.120 に答える
0

試す:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz

次に試してください:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm

これにより、現在のディレクトリ内のすべての .tar.gz ファイルが展開され、すべての .tar.gz ファイルが削除されます。説明が必要な場合は、「|」その前のコマンドの stdout を取得し、それをその後のコマンドの stdin として使用します。これらのコマンドと引数が何をするかを理解するには、引用符なしで「man command 」を使用してください。または、オンラインで調査することもできます。

于 2016-05-28T18:51:51.340 に答える