
ファイルを削除するには、ヘッダーリストとワイルドカードを使用してみてください。ファイルのヘッダーは同じですが、エンディングが異なります。ワイルドカードを取得する方法がわかりません。
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
ファイル名から拡張子を削除します。
答え2
そしてzsh
:
rm -f -- *.sra.cache(e['reply=($REPLY $REPLY:r:r.fastq)'])
.sra.cache
これにより、各ファイルに対応するファイルが削除されます。.fastq
*.sra.cache
$var:r
r
csh / vimに似たoot名を指定します(拡張子が1つ削除されます)。$var
$var