特定のフォルダー内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?

特定のフォルダー内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?

現在の/作業ディレクトリ( を使用して移動cd)を特定のディレクトリに設定し、次のように入力します。

rm *.xvg

このコマンドは何をしますか?上記のコマンドはのみ拡張子のファイルを削除する.xvg のみ作業ディレクトリ内ですか?

.xvg上記のコマンドでファイルのみが削除されることを絶対に確認したかったので、質問する前に試してみることに不安を感じました。作業ディレクトリにある

答え1

はい、rm *.xvgそうしますのみ指定された拡張子のファイルを削除します現在ディレクトリ。

良いファイルを削除したいディレクトリに実際にいるかどうかを確認するには、pwd現在のディレクトリを表示するコマンドを使用して、ls期待するファイルが見つかるかどうかを確認します。

コマンドの発行に少し不安がある場合はrm、次の 2 つの方法があります。

  1. ls *.xvgこのコマンドによって影響を受けるファイルのリストを表示するには、次のように入力します。

  2. あなたが多くファイルの数が多い場合は、-iコマンドラインスイッチ を使用することもできますrm( と にも存在しますcp) mv。 を使用するrm -i *.xvgと、削除してもよいかどうかがファイルごとに確認されるので、予期しないものが削除されないようにすることができます。 (ただし、ファイル数が多い場合は面倒です :)

答え2

ディレクトリに移動する必要はありません。

rm /some/dir/*.xvg 

パスにタイプミスや同様の間違いがあり、/som/dir が存在しない場合は、次のようになります。

cd /som/dir
rm *.xvg

は、現在のディレクトリにあるすべての .xvg ファイルを誤って削除してしまいます。最初のコマンドでは削除されないので、再度 cd して戻す必要はありません。

別の方法としては、find を使用することです。

find /some/dir/ -maxdepth 1 -type f -name "*.xvg" -delete 

答え3

はい、現在のディレクトリ内のrm *.xvgで終わるファイルのみを削除します。理由は次のとおりです。.xvg

このようなコマンドを入力すると、作業は使用しているシェル (bash と仮定) とコマンド バイナリの間で分割されます。

と入力すると、バイナリを見つけることができますwhich rm。この小さなプログラムは、ファイルのリンク解除を行います。このようなプログラムは、コマンド ラインから起動でき、prog arg1 arg2 arg3起動時に引数のリストを読み取ることができます。 の場合rm、それらは削除される完全修飾ファイル名のリストとして解釈されます。したがって、ファイル を含むディレクトリにいる場合foo.bar、 と入力するdelete 'foo.*'と になりますrm: foo.*: No such file or directory。ファイル パターンを囲む一重引用符に注意してください。これは、シェルに引数をそのまま渡すように指示します。

ただし、同じディレクトリに入力するとrm *.bar、ファイルは削除されます。ここで何が起こっているかというと、コマンドを入力するために使用しているプログラムであるシェルが、引数をコマンドに渡す前にいくつかの変換を実行しているのです。これらの 1 つは「ファイル名の拡張」、別名「グロビング」と呼ばれます。bash ファイル名の拡張の一覧は、ここ最も一般的な展開の 1 つは で*、これは現在のディレクトリ内のファイル名に展開されます。

動作中の glob を確認する簡単な方法は、 を使用することです。echoこれは、シェルを介して渡されたすべての引数を出力します。したがって、echo *同じディレクトリに と入力すると、 が出力されますfoo.bar。したがって、 と入力するとrm *.bar、実際には、シェルが引数リストを に展開しfoo.bar、それをコマンドに渡しますrm

グロビングを制御する方法はいくつかあります。たとえば、bash の最近のバージョンでは、再帰的な拡張を行う globstar というオプションをオンにすることができます。入力すると、すべてのサブフォルダーにecho **/*.barある で終わるすべてのファイルのリストが表示されます.bar。したがって、rm **/*.barglobstar が有効になっている bash に入力すると、サブフォルダー内の一致するすべてのファイルが再帰的に削除されます。

答え4

指示 :

  rm ./*.pgm

私には効果がある

指示:

rm *.pgm

エラーコマンドを発行します(ポーランド語、翻訳済み):

rm: wrong option - '1'
Use "rm ./-1000.pgm" to delete the file '-1000.pgm'.
Write "rm --help" for information.

bash --version
GNU bash, wersja 4.4.19(1)-release (x86_64-pc-linux-gnu)

関連情報