我想删除文件列表中不匹配R1.fastq.gz
的所有文件。
如何使用rm
进行反向匹配?
答案 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