如何从列表中删除除另一个特定模式文件之外的某些模式文件?

How to remove certain pattern files except another certain pattern files from a list?

我有很多名为 chr1_gene_*.raw 的文件。我想保留其中一些。所以我使用以下命令。

find . -maxdepth 1 -type f -name "*.raw" -not -name "chr1_gene_448.raw" -not -name "chr1_gene_1914.raw" -not -name "chr1_gene_2456.raw" -not -name "chr1_gene_1554.raw" -not -name "chr1_gene_2024.raw" -not -name "chr1_gene_35.raw" -not -name "chr1_gene_509.raw" -not -name "chr1_gene_1952.raw" -not -name "chr1_gene_575.raw" -not -name "chr1_gene_2249.raw" -not -name "chr1_gene_272.raw" -not -name "chr1_gene_2158.raw" -exec rm -rf {} \;

有时候我想保留的文件太多了。我不想多次键入“-not -name”。有没有办法把列表放在“-not-name”中?

您可以使用脚本实现此目的 notnamescript.sh :

#!/bin/bash
while read line
do
echo "-not -name " $line
done<notnamelist

将所有 -not -name 个名字放在一个名为 notnamelist 的文件中。记住那里 应该没有尾随空行。

 find . -maxdepth 1 -type f -name "*.name" $( ./notnamescript.sh ) -exec rm -rf {} \;