私は通常、ある種のDebianベースのLinuxディストリビューションを使用しています。 Debian7.8またはLinuxMint17のいずれかです。次のような分割RARファイルがあります。
filename.rar
filename.r01
filename.r02
filename.r03
etc ...
dtrx
またはunrar
を使用してアーカイブを抽出したので、できれば1行を使用して、分割アーカイブのすべてのパーツファイルを削除したいと思います。
現時点ではrm filename.r*
を実行しますが、これは一般的にはうまく機能しますが、ファイルの名前がrabbid.ranger.robot.r01
の場合、抽出されたディレクトリrabbid.ranger.robot
も削除できます。
だから私はもう少し頑丈なものを探しています。
短いスクリプトも受け入れます。
持っている.r0*
ファイルの数に応じて、*
を?
に置き換えることができます。これにより、.r0と他の1文字のファイルが削除されます。したがって、rabbid.ranger.robot.r01
は削除されますが、rabbid.ranger.robot.r010
は削除されません。通常、次のように使用します。
rm filename.r??
パーツ番号が最大12の分割RAR(つまり、最後のファイルとしてfilename.r12
)があり、 any 他のファイルを削除しないように特に注意したいとします。 bash がシェルであると仮定すると バージョン4以降を使用している (bash --version
で確認)-を使用すると、ファイルの明示的なリストを簡単に作成できます。 ブレース拡張 :
rm filename.rar filename.r{01..12}
これにより、 only これらのファイルが削除されます。filename.rtf
(またはfilename.r13
)という名前のファイルも保存されます。フォルダ内にある(または持っている可能性のある)他のファイルに応じて、これは Devanによって提案された通常は非常に優れた.r??
方法 よりも好ましい場合とそうでない場合があります。
数値範囲を含む中括弧の拡張は、いくつかのシェルの非常に古い機能です。ただし、バージョン4より前では、bashはゼロパディングをサポートしていませんでした(つまり、filename.r05
ではなくfilename.r5
のような名前が必要です)。
最初に、中括弧式が展開されるファイル名を確認できます。
$ echo filename.rar filename.r{01..12}
filename.rar filename.r01 filename.r02 filename.r03 filename.r04 filename.r05 filename.r06 filename.r07 filename.r08 filename.r09 filename.r10 filename.r11 filename.r12
(この方法でも、*
または?
を使用して式を確認できます。展開する対象は、コマンドを実行したときに存在するフォルダーによって異なることに注意してください。)
find
コマンドを使用できます。作業ディレクトリから:
find . -type f -name "filename.*" -exec rm {} \;
これは一致するファイルのみを検索し、ディレクトリは除外されます。最初にコマンドをls
ではなくrm
でテストして、希望する結果が返されることを確認することをお勧めします。
find . -type f -name "filename.*" -exec ls {} \;