同じ名前の複数のファイルを削除する方法は?

同じ名前の複数のファイルを削除する方法は?

「このファイルをすべて削除するにはどうすればよいですか?」という名前のtxtファイルがたくさんあります。file1.txt file2.txt file3.txt ... file1000.txt 私はUnixに初めて遭遇し、誤ってディレクトリ内の他のファイルを削除したいと思います。

他の質問も見ましたが、よくわかりません。似たようなことができますか?

rm -v !("differentfile"|"anotherfile"|"otherfile"|"finalfile") 

それでは、同じ名前の番号を持つファイルをすべて削除し、必要なファイルをいくつか保持しますか?この行は、私の作業ディレクトリ/フォルダ内のファイルのみを削除する必要があります。そうですか?

rmを使用しながら削除したい特定のファイルだけを一度に削除する方法はありますか?

ベストアンサー1

rm file*.txtfile名前が文字列で始まり、文字列で終わる現在のディレクトリ内のすべてのファイルが削除されます.txt

もしあればたくさんそのうち、「パラメータのリストが長すぎます。」エラーが発生します。この場合、以下を使用できます。

find . -maxdepth 1 -name 'file*.txt' -delete

代わりに。

このコマンドは、現在のディレクトリで名前が一致するファイルをfind見つけて削除するために使用されます。file*.txtこの-maxdepth 1オプションは、(現在のディレクトリ)を除くすべてのサブディレクトリfindにエントリを制限します。.

このコマンドはファイルとディレクトリを区別しません(どちらrm file*.txtもそうではありません)。通常のファイルのみを削除するには、次を使用します。

find . -maxdepth 1 -type f -name 'file*.txt' -delete

find非標準-deleteおよび/または-maxdepthオプションなしで実装するには、以下を使用してください。

find . ! -path . -prune -type f -name 'file*.txt' -exec rm -f {} +

あるいは、シンプルだが遅いループを使用することもできます。

for name in file*.txt; do
    rm -f "$name"
done

おすすめ記事