現在の作業ディレクトリ(cd
を使用して移動する)を特定のディレクトリに設定し、次のように入力した場合:
rm *.xvg
このコマンドは何をしますか?上記のコマンドが作業ディレクトリ内の拡張子.xvg
onlyを持つファイルをonly削除するのは本当ですか?
上記のコマンドは.xvg
ファイルのみを削除することを確実にしたいので、質問する前にこれを試すことに神経質になりました。作業ディレクトリにあります。
はい、rm *.xvg
はonlycurrentディレクトリ内の指定された拡張子を持つファイルを削除します。
実際にファイルを削除するディレクトリにいることを確認するgood方法は、pwd
コマンドを使用して現在のディレクトリを表示し、ls
を実行して、期待するファイルが見つかったことを確認することです。
rm
コマンドを発行することに少し不安がある場合は、次の2つのことを実行できます。
ls *.xvg
と入力すると、このコマンドの影響を受けるファイルのリストが表示されます。
lotのファイルがない限り、rm
の-i
コマンドラインスイッチをいつでも使用できます(cp
とmv
にも存在します)。 rm -i *.xvg
を使用すると、個々のファイルを削除してもよい場合はプロンプトが表示されるため、予期しないものが削除されることはありません。 (ただし、ファイルがたくさんある場合、これは退屈です。)
ディレクトリに移動する必要はありません。使用するだけです
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ファイル名の展開のリスト here を確認できます。最も一般的な展開の1つは*
で、現在のディレクトリでファイル名に展開されます。
作業中のグロブを確認する簡単な方法は、echo
を使用することです。これは、シェルを介して渡されたすべての引数を出力します。したがって、同じディレクトリでecho *
と入力すると、foo.bar
が出力されます。したがって、rm *.bar
と入力すると、シェルは引数リストをfoo.bar
に展開し、それをrm
コマンドに渡します。
グロビングを制御する方法はいくつかあります。たとえば、bashの最近のバージョンでは、再帰的な展開を行うglobstarと呼ばれるオプションをオンにすることができます。 echo **/*.bar
と入力すると、すべてのサブフォルダで.bar
で終わるすべてのファイルのリストが表示されます。したがって、globstar対応のbashにrm **/*.bar
と入力すると、サブフォルダー内の一致するすべてのファイルが再帰的に削除されます。
コマンド:
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)