Files

如何從 list.txt 中刪除文件並使用萬用字元?

  • January 17, 2022

嘗試使用標題列表和萬用字元刪除文件。文件的標題相同,但結尾不同。不知道如何在那裡獲得萬用字元。

我試圖從 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 認為它是文件名的一部分。

無需使用單獨的文件列表等,您可以使用簡單的for循環,例如:

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

${f%sra.cache}從文件名中刪除sra.cache副檔名。

zsh

rm -f -- *.sra.cache(e['reply=($REPLY $REPLY:r:r.fastq)'])

這將刪除每個文件的.sra.cache相應文件。.fastq``*.sra.cache

$var:r在 csh / vim 中為您提供 like 的root 名稱(刪除了一個副檔名)。$var``$var

引用自:https://unix.stackexchange.com/questions/686662