ディレクトリがあります。約 500K の .gz ファイルがあります。
そのディレクトリ内のすべての .gz を抽出し、.gz ファイルを削除するにはどうすればよいですか?
@techedemic は正しいですが、「.」がありません。現在のディレクトリに言及すると、このコマンドはすべてのサブディレクトリを通過します。
find . -name '*.gz' -exec gunzip '{}' \;
明らかにこれを行う方法は複数あります。
# 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 を実行するだけです
現在のディレクトリとそのサブディレクトリにあるすべての gz ファイルを抽出します。
find . -name "*.gz" | xargs gunzip
単一のファイルを抽出する場合は、次を使用します。
gunzip file.gz
ファイルを抽出し、.gz ファイルを削除します。
for foo in *.gz
do
tar xf "$foo"
rm "$foo"
done
試す:
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 」を使用してください。または、オンラインで調査することもできます。