unzipコマンドを「元に戻す」方法は?


19

「unzip XXX.zip」を使用してzipファイルを抽出しましたが、残念ながら間違えました。

ここで、「unzip」で生成されたすべてのファイルとディレクトリを削除します。
どうすれば元に戻すことができますか?

回答:


29

これを使って:

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -v {}

あなたが懐疑的である場合にこれを使用してください(確認を求めます)

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -iv {} 

ファイルに名前にスペースが含まれていると失敗します...(-i編集中に+1が
追加されました

問題はにありますawk '{print $4}'-スペースを含むファイル名はにあるかもしれません$4 $5 $6 ...。:)
sarnold

1
OK。それも修正しました。
アビジートラストーギ

5
FTRこれにより、元のzipファイルも削除されます
sjr

私の方法:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei

5

あなたは大まかな場所にいます。標準zipinfo(1)ユーティリティは、アーカイブから明確なファイル名を取得するメカニズムを提供していません。しかし、あなたは近くに来ることができます:

zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i

どのファイルにも改行が含まれていないことが確実な場合は、-iオプションを削除できますrm(1)(確かに退屈になります)。


4
unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}

ユーティリティとオプションを-Z呼び出してファイル名のみを印刷するように指示するため、ジョブを実行しますzipinfo-1

これについての詳細はman unzipman 1 zipinfoコマンドおよびコマンドで確認できます。


1

最初にフォルダーを作成せずに誤って解凍した後にディレクトリをクリーンアップする場合は、フォルダーを作成し、そのフォルダーに解凍してから、次のようにします。

rm -r ` ls folder `

「 `」はコマンドのチェーン化に非常に便利ですが、非常に文字通りです。

コメントはこの答えを改善しました。隠しファイルも削除したい場合は(おそらくそうするでしょう)、これを実行してください。

rm -r ` ls -A folder `

誤った構文に急いで謝罪、投票を削除することはできますか?
chrispepper1989

1
zipがファイルの上書きを拒否した場合、元のファイルは削除されます。隠しファイルが解凍された場合、それらは削除されません(使用しない限りls -a)。
gmarmstrong

1
というか、ls -Aリストからのエラーを避けるために、.そして..
-gmarmstrong

0

(コマンドラインを使用せずに)Nautilusでこれを行うには、誤ってファイルを抽出した場所に移動し、[変更]タブをクリックしてファイルを並べ替え、その後、正確な時間のラベルが付いたファイルをすべて選択して削除しますunzipコマンドを実行しました。


1
質問を注意深く読んでください。あなたの答えは元の質問には答えませ。残念ながら、LinuxにはWindows Explorerは含まれていません。
DavidPostill

ああ、うん!今までunzipがWindowsのターミナルコマンドではなかったということは、私には思いもしませんでした。ありがとう!Nautilusに同様の機能があるかどうかを確認し、答えを編集します。それ以外の場合は、削除します。
キャメロンロイテイラー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.