特定の名前ですが、拡張子が異なるすべてのファイルを一度に削除する

特定の名前ですが、拡張子が異なるすべてのファイルを一度に削除する

次のファイルセットを含むディレクトリがあります。

cheatsheetold.aux
cheatsheetold.log
cheatsheetold.out
cheatsheetold.pdf
cheatsheetold.synctex.gz
cheatsheetold.tex
cheatsheetnew.aux
cheatsheetnew.log
cheatsheetnew.out
cheatsheetnew.pdf
cheatsheetnew.synctex.gz
cheatsheetnew.tex

私がしたいことはすべて削除することですcheetsheetold.

cheatsheetold.aux
cheatsheetold.log
cheatsheetold.out
cheatsheetold.pdf
cheatsheetold.synctex.gz
cheatsheetold.tex

触れる必要はありませんcheatsheetnew

cheatsheetnew.aux
cheatsheetnew.log
cheatsheetnew.out
cheatsheetnew.pdf
cheatsheetnew.synctex.gz
cheatsheetnew.tex

私はすでにそれを見ましたこれは別の質問ですしかし、両方のファイル名に完全な拡張子があるため、問題は解決されません。

答え1

Unixにはファイル拡張子がなく、MicrosoftのWindowsにもありません(Windows ME以降ではありませんが、ファイルエクスプローラにはまだ概念があります)。あなたがしなければならないことは(あなたの場合cheatsheetold.

を使用してこれを行うことができますcheatsheetold.*。次にファイルリストをに渡しますrm。どのコマンドでも使用できます。これは問題ではありませんrm

練習するecho cheatsheetold.*

答え2

ファイルを削除するときに、どのようなワイルドカードを使用したいシェル(bash、fish、zsh、csh)についても説明がありません。

bashよく知られているシェルなので、単に次のコマンドを使用できると述べています。

rm -- cheatsheetold.*

*--bash シェル拡張によるインデントされないエラーを回避するには、as の後にワイルドカードを使用します。

コマンドラインにenv | grep 'SHELL' 使用中のシェルが表示されることがあります。また、より単純化されたPOSIXシェルでコマンドラインをテストしましたdash

私は他のシェル(例:csh、tsh、またはFish)をまったく使用していないので、ここでglobbingがどのように機能するかはわかりません。

どのシェルが実行されているかを知るもう1つの方法は、現在のプロセス(シェル)のPIDがps -p $$どこにあるべきか、およびpsツールが現在のシェルのPIDに制限されているプロセスを一覧表示することです。$$

https://help.ubuntu.com/community/ShellGlobbing

答え3

ワイルドカードを使用できますが、一致する他のファイルが削除される可能性があるため、非常に注意する必要があります。

rm cheatsheetold.*

上記のコマンドは、cheatsheetold.名前が何であれ開始し、その後に何も(拡張子など)来るファイルを削除します。

関連情報