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

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

「このファイルをすべて削除するにはどうすればよいですか?」という名前の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

答え2

同じ構造を持つ他のファイルがない場合は、「file」というプレフィックスが付いたいわゆるワイルドカードを使用してください。アスタリスクは、他の文字列(空の文字列を含む)を表します。まず、「rm」の代わりに「ls」(リスト)を使用して確認してください。

ls file*.txt

「ファイル」の後の1つ以上の数字とそれに続く他の数字で範囲を絞り込むこともできます。

ls file[[:digit:]]*.txt

答え3

スキーマに他のファイルが含まれるかどうかわからない場合は、次のようにします。

  • 別の(一時)フォルダに移動してmv PATTERNファイルのリストを確認し、すべてが正常な場合は一時フォルダを削除します。

  • 使用rm -i PATTERN。各削除を手動で確認する必要があります。

  • 実行する前にまたはを実行して、リストが正常であることを確認rmできます。ls PATTERNecho PATTERN

関連情報