ファイルに一致するディレクトリ部分を見つけて、ディレクトリから一致するファイルを削除するにはどうすればよいですか?

ファイルに一致するディレクトリ部分を見つけて、ディレクトリから一致するファイルを削除するにはどうすればよいですか?

Solution.txtというファイルがあります。現在のディレクトリにそのファイルがあることを確認する必要があります。ファイルが存在する場合は削除し(solution.txt)に置き換えます。

例:私のディレクトリ:wer.txt wer1.txt wer2.txtsolution1.txtsolution23.txtsolution32.txt

「solution」で始まり、txtで終わるすべてのファイルをディレクトリから削除し、Solution.txtに置き換える必要があります。

シェルスクリプトソリューションを提供してください。

答え1

すべてのSolution ... txtファイルを削除しようとすると調整できますが、Solution.txtが存在する場合は削除しません。

find . -type f -name "solution[0-9]*.txt" -exec rm -f {} \; 

ただし、ファイル名は複数にすることはできません。solution.txt

答え2

質問されたものではないかもしれませんが、私の答えは次のとおりです。

まず、探している項目を探す必要があります。 find /file/where/you're/looking/at -name solution | grep txt

その項目が見つかったら、次を使用して削除できます。 rm thename23.txt thename34.txt

またはマージしてください(完全に置き換えるには1つだけ使用してください>)。 cat thename23.txt >> thename34.txt

-execコマンドのオプションも使用できますfind。追加情報ここで。
挨拶

答え3

「solution.txtで置き換える」という意味を定義していませんが、最初に別のソリューションファイルを削除したいので、どこかに代替ファイルがあるとします。それ以外の場合、この質問は成立しません。多くの意味があります。

私の考えでは、最も簡単な方法は

rm solution[0-9]*.txt >/dev/null && cp /from/somewhere/solution.txt .

これによりファイルが削除され、成功すると Solution.txt が作業ディレクトリにコピーされます。つまり、その後にソリューションファイルがまったくないか、またはSolution.txtという名前のファイルが1つだけ存在することを保証します。

これにより、Solution5x.txtというファイルも削除されます。これがあなたに受け入れられるかもしれません。これが問題の場合は、正規表現を使用してファイル名を一致させる必要がありますfind ... -regex

関連情報