
「このファイルをすべて削除するにはどうすればよいですか?」という名前のtxtファイルがたくさんあります。file1.txt file2.txt file3.txt ... file1000.txt
私はUnixに初めて遭遇し、誤ってディレクトリ内の他のファイルを削除したいと思います。
他の質問も見ましたが、よくわかりません。似たようなことができますか?
rm -v !("differentfile"|"anotherfile"|"otherfile"|"finalfile")
それでは、同じ名前の番号を持つファイルをすべて削除し、必要なファイルをいくつか保持しますか?この行は、私の作業ディレクトリ/フォルダ内のファイルのみを削除する必要があります。そうですか?
rmを使用しながら削除したい特定のファイルだけを一度に削除する方法はありますか?
答え1
rm file*.txt
file
名前が文字列で始まり、文字列で終わる現在のディレクトリ内のすべてのファイルが削除されます.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 PATTERN
echo PATTERN