使用带有反向匹配的“rm”命令

时间:2018-04-29 13:51:58

标签: bash

我想删除文件列表中匹配R1.fastq.gz的所有文件。 如何使用rm进行反向匹配?

2 个答案:

答案 0 :(得分:2)

使用bash中提供的扩展模式语法:

shopt -s extglob
printf '%s\n' !(R1.fastq.gz)  # To verify the list of files the pattern matches
rm !(R1.fastq.gz)  # To actually remove them.

或者,使用find

find . ! -name R1.fastq.gz -print         # Verify
find . ! -name R1.fastq.gz -exec rm {} +  # Delete

如果您的find版本支持该版本,则可以使用-delete代替-exec rm {} +

find . ! -name R1.fastq.gz -delete

答案 1 :(得分:-2)

您可能希望"反转匹配"选项,grep –v,表示"选择与正则表达式不匹配的行。"然后删除它们。

rm $(ls | grep -v -e "R1.fastq.gz")之类的东西应该这样做。

请注意,这会清除您所在文件夹中的所有文件, R1.fastq.gz