web-dev-qa-db-ja.com

Linuxで次の拡張子を持たないすべてのファイルを削除します

拡張機能のリストがあります:

avi,mkv,wmv,mp4,mp5,flv,M4V,mpeg,mov,m1v,m2v,3gp,avchd

Linuxのディレクトリにある拡張子のないファイルだけでなく、次の拡張子のないファイルもすべて削除したい。

Rm linuxコマンドを使用してこれを行うにはどうすればよいですか?

19
Tike

まず、これらの拡張子を含まないファイルを見つける必要があります。これは、findコマンドを使用して非常に簡単に実行できます。次のコマンドでビルドできます-

find /path/to/files ! -name "*.avi" -type f -exec rm -i {} \;

-regexの代わりに-nameを使用して、複雑な検索パターンを入力することもできます。 !は検索を無効にします。したがって、これらの拡張子を含まないファイルを効果的に一覧表示します。

削除する前にすべてのファイルが一覧表示されるため、rm -iを実行することをお勧めします。リストが包括的であると、リストを含めるかどうかを自分で決めることができるため、面倒になる可能性があります。

これを使用して大量のファイルを削除すると、危険になる可能性があります。一度削除すると、元に戻すことはできません。したがって、リストを削除する前に、まずfindなしでrmコマンドを実行して、リストを徹底的に検査してください。

更新:

aculichのコメントで述べられているように、次のこともできます-

find /path/to/files ! -name "*.avi" -type f -delete

-type fは、finddelete通常のファイルのみを保証し、ディレクトリ、シンボリックリンクなどには触れません。 。

33
jaypal singh

Bashを使用すると、最初にextglobオプションを有効にできます。

$ shopt -s extglob

そして、次のことを行います。

$ rm -i!(*。avi | * .mkv | * .wmv | * .mp4)

4
xesco