list.txtからファイルを削除し、ワイルドカードを使用する方法は?

list.txtからファイルを削除し、ワイルドカードを使用する方法は?

ファイルを削除するには、ヘッダーリストとワイルドカードを使用してみてください。ファイルのヘッダーは同じですが、エンディングが異なります。ワイルドカードを取得する方法がわかりません。

NCBIからいくつかのSRAファイルをダウンロードしようとしていますが、ダウンロードに問題があります。正しくダウンロードされなかったファイルは、file1.fastqとfile1.sra.cache(file2、file3などの場合)を生成しました。正しくダウンロードされたファイルは私にfile.fastqとfile.sra.cacheを提供するので、私のダウンロードは次のようになります。これ:

file1.fastq
file1.sra
file2.fastq
file2.sra.cache
file3.fastq
file3.sra.cache

file1 は正常にダウンロードされましたが、file2 または file3 は正常にダウンロードされませんでした。 file2とfile3に関連するすべてのファイルを削除したいと思います。

どのファイルが正しくダウンロードされていないかを見つけましたls *.sra.cache。これで無効なファイルヘッダーのリストがあります(例:file2、file3、...;開始にすぎません)。ファイル名のリストを入力してワイルドカードを追加して削除するにはどうすればよいですか?

次のワイルドカードを使用してファイル名のリストを作成したいと思います。

file2*
file3*

同様のことをしますcat list.txt | xargs rmが、ワイルドカードを操作する方法がわかりません。*リスト自体に入れると、Unixはそれがファイル名の一部だと思います。

ベストアンサー1

別のファイルのリストや同様のものを使用する代わりに、次のようなfor単純なループを使用できます。

for f in *.sra.cache; do
    rm -- "${f%sra.cache}"*
done

${f%sra.cache}sra.cacheファイル名から拡張子を削除します。

おすすめ記事