Linux で拡張子のない zip ファイルを一括削除する方法

Linux で拡張子のない zip ファイルを一括削除する方法

拡張子のないさまざまなファイルでいっぱいのフォルダーがあります。 zip ファイルであるすべてのファイルを削除するにはどうすればよいですか?

答え1

私の Kubuntu では次のコマンドを実行します:

file -b --mime-type path/to/some/zip

戻り値:

application/zip

これを使用すると、現在のディレクトリ(サブディレクトリを含む)内のすべての zip ファイルを検出できます。コマンドは次のとおりです。

find . -type f -exec sh -c '
   for f do
   file -b --mime-type "$f" | grep -q "^application/zip$" && {
      printf "%s\n" "$f"
      # rm "$f"
      } 
   done
' find-sh {} +

結果が正常であると思われる場合は、コメントを解除rm "$f"(削除#) して実際にファイルを削除します。

ノート:

  • も も、のポータブル オプションではあり-bません。 がこれらをサポートしていない場合は、 bare が何を出力するかを確認してください。 次の可能性があります。--mime-typefilefilefile path/to/some/zip

    path/to/some/zip: Zip archive data, …
    

    追加情報を示します。この出力に頼る必要がある場合、コマンドは次grepのようになります。

    grep -q ": Zip archive data"
    

    しかし、名前にこの文字列が含まれているファイルは (おそらく) 誤って検出される可能性があります。とにかく、印刷grep内容に合わせて調整してくださいfile

  • find-shここで説明されています:の2番目のshは何ですかsh -c 'some shell code' sh?

  • このコマンドはファイル名を気にしません (Linux では、「拡張子」と呼ばれるものはファイル名の一部にすぎません)。これは、投稿の本文で尋ねた質問 (「zip ファイルであるすべてのファイルを削除するにはどうすればいいですか?」) に答えるものであり、タイトル (「zip ファイルを一括削除する方法」) には答えません。延長なし()。

関連情報