假设我有一个名为 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 -f
或 rm 2>/dev/null
没有这样做(macos 上的 zsh)。
关于python - 在 Unix 中基于部分匹配删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73576149/