回答:
はい、rm *.xvg
しますのみあなたの中に指定された拡張子を持つファイルを削除し、現在のディレクトリ。
ファイルを削除したいディレクトリにいることを確認する良い方法はpwd
、現在のディレクトリを表示するコマンドを使用してls
から、期待するファイルを見つけることを確認することです。
rm
コマンドの発行に少し不安がある場合は、次の2つのことができます。
入力ls *.xvg
して、このコマンドの影響を受けるファイルのリストを表示します。
多くのファイルがない限り、いつでも-i
コマンドラインスイッチを使用できますrm
(cp
およびにも存在しますmv
)。を使用rm -i *.xvg
すると、ファイルを削除しても問題ない場合、個々のファイルの入力を求められます。(ただし、多くのファイルがある場合は面倒です:)
dirに移動する必要はなく、使用するだけです
rm /some/dir/*.xvg
/ som / dirが存在しないパスにタイプミスまたは同様の間違いがある場合:
cd /som/dir
rm *.xvg
現在のディレクトリ内のすべての.xvgファイルを誤って削除します。最初のコマンドはそうではないので、再度cdする必要はありません。
別の方法は、findを使用することです。
find /some/dir/ -maxdepth 1 -type f -name "*.xvg" -delete
はい、現在のディレクトリで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つは、*
現在のディレクトリのファイル名に展開されます。
作業中のグロブを見る簡単な方法はecho
、シェルを介して渡されたすべての引数を出力するを使用することです。したがってecho *
、同じディレクトリに入力すると出力されますfoo.bar
。したがって、を入力するとrm *.bar
、実際に起こっているのは、シェルが引数リストをに展開しfoo.bar
、それをrm
コマンドに渡すことです。
グロビングを制御する方法がいくつかあります。たとえば、bashの最近のバージョンでは、再帰的な展開を行うglobstarというオプションをオンにできます。入力echo **/*.bar
すると.bar
、すべてのサブフォルダーで終わるすべてのファイルのリストが表示されます。したがってrm **/*.bar
、globstar対応bashを入力すると、サブフォルダー内の一致するすべてのファイルが再帰的に削除されます。
rm -f {*.xvg,.*.xvg}
隠しファイルも削除します。またrm -R -f {*.xvg,.*.xvg}
、ディレクトリも削除します。