python - 在 Unix 中基于部分匹配删除文件

标签 python unix

假设我有一个名为 duplicates.txt 的文件,如下所示:

ID-32532
ID-78313
ID-89315

我还有一个 Fastq 目录,其中包含以下名称的文件:

ID-18389_Feb92003_R1.fastq
ID-18389_Feb92003_R2.fastq
ID-32532_Feb142003_R1.fastq
ID-32532_Feb142003_R2.fastq
ID-48247_Mar202004_R1.fastq
ID-48247_Mar202004_R2.fastq

我想输入一个命令来搜索 duplicates.txt 并在 Fastq 目录中找到名称部分匹配的任何文件并删除该文件。根据提供的示例,这将删除名为 ID-32532_Feb142003_{R1/R2}.fastq 的文件。

我应该使用什么 Unix 命令,或者如果需要我可以用 Python 编写脚本。

最佳答案

这里有一个小的 bash 函数可以做到这一点:

lrmduplicates(){

  while read -r dupe;
  do
    echo removing "$dupe" ;

    #fine tune with ls first...
    #ls Fastq/$dupe*

    rm Fastq/$dupe*

  # dupes file: dont forget a line feed after 3rd pattern
  # i.e. end on empty line.
  done < duplicates.txt
  
}


为了获得额外奖励,在不匹配时抑制错误。不知道自己该怎么做。 rm -frm 2>/dev/null 没有这样做(macos 上的 zsh)。

关于python - 在 Unix 中基于部分匹配删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73576149/

相关文章:

python - 使用 Fabric 从 Python 中在远程服务器上执行代码

python - 如何在 Python 的 shell 脚本中获取退出状态集

windows - SCHTASKS.exe 的参数生成器

bash - 用于有效制表符完成的 Unix 文件命名约定?

python - 带有基于另一列的标记的 Pandas 线图

python - reportlab中旋转图片的简单方法

python - 在 Sage 中使用 gnuplot 时出错,但在常规 Python 中工作正常

javascript - 通过ajax将上传的excel文件数据传递给python

java - 如何使用 uniobject for java 连接到 Unix 上的 UNIDATA

linux - 捕获并发连接数据