そのファイル拡張子を持たないすべてのファイルを削除します。

そのファイル拡張子を持たないすべてのファイルを削除します。

私の目標は、特別な条件が満たされた場合にいくつかのファイルを削除するLinuxコマンドシーケンスを見つけることです。

同じ名前の拡張子を持つファイルがない場合、または現在のディレクトリにある場合は、その拡張子を持つファイルまたは.cut現在のディレクトリにあるすべてのファイルを削除する必要があります。.cut.bak.rec.mpg

背景:私は記録されたプログラムを切り取ることができるLinuxベースのPVR用のツールを開発しています。各レコード(拡張子.recまたは.mpg)に対して、セグメントタグは.cut同じ名前のファイルに保存されます。一部の録音が移動/名前変更/削除されると、切り取られたファイルは切り離されたままになるため、削除する必要があります。役に立たないカットファイルを削除するためにCで実装しました。さて、(簡単な)システムベースのソリューションがあるかどうか疑問に思います。この場合、「システム」を介してバックグラウンドで実行できるため、アプリの反応性が向上します。

私は再帰的なケースについて同様の質問をしました(サブディレクトリも検索しました)。ここ。 kosはすでに(ほぼ)完璧な答えを与えています。しかし、残念ながら、あまりにも多くのファイルを削除して使用することはできず、理解できません...しかし、 'ls'の結果が次のような場合、ここでも同じアイデアを使用できます。 1行ずつ解析して送信します。

ベストアンサー1

このように?

for f in *.cut *.cut.bak
do
    [ -e "$f" ] || continue
    f="${f%%.bak}"
    f="${f%%.cut}"
    [ -e "$f".mpg ] || [ -e "$f".rec ] || rm -i -- "$f".cut "$f".cut.bak
done

おすすめ記事