質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Arch Linux

arch(アーク)は、バージョン管理システムです。 また、リポジトリ(アーカイブ)操作を行えるツールの総称として扱われています。

Q&A

解決済

1回答

1035閲覧

Linux:sh シェルコマンド、findとgunzipコマンドを併用した圧縮ファイル展開

zyozer00

総合スコア9

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Arch Linux

arch(アーク)は、バージョン管理システムです。 また、リポジトリ(アーカイブ)操作を行えるツールの総称として扱われています。

0グッド

0クリップ

投稿2022/06/15 11:50

file 、gunzipコマンドを使用して、ファイル解凍を以下のように行いたいです。

sh

1work_dir="解凍ファイル配置パス" 2find $work_dir -not -name "*'*" -and -not -name '*"*' -and -name "*.gz" -print0 | xargs -0 gunzip

このコマンドで解凍処理が行えることは確認はできるものの、解凍ファイル配置パスに保存されている一部の圧縮ファイルが破損している場合、その破損ファイルが解凍されず、残りの破損していないファイルに対して解凍処理を行うことができません。

イメージ

現在起きている問題
”解凍ファイル配置パス”
|-aaa.gz
|-bbb.gz(破損している圧縮ファイル)
|-ccc.gz

上記コマンド実行後
”解凍ファイル配置パス”
|-aaa
|-bbb.gz(破損している圧縮ファイル)
|-ccc.gz
となりccc.gz が回答できません。

破損していないファイルに対して解凍処理をどのようにすれば行えるのかご教授いただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

破損していないファイルに対して解凍処理を...

一ファイルずつgunzipを実行するように、xargsに-n 1を指定すればいいのでは。

$ find $work_dir -not -name "*'*" -and -not -name '*"*' -and -name "*.gz" -print0 | \ xargs -0 -n 1 gunzip

-n 1ありなしの例。

$ touch aa bb "cc ddd" $ find . -type f ./cc ddd ./aa ./bb
$ find . -type f -print0 | xargs -0 echo gunzip gunzip ./cc ddd ./aa ./bb
$ find . -type f -print0 | xargs -0 -n 1 echo gunzip gunzip ./cc ddd gunzip ./aa gunzip ./bb

投稿2022/06/15 12:29

編集2022/06/15 12:31
shiketa

総合スコア3971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問