我想删除给定文件夹中与模式^transactions_[0-9]+
假设我在文件夹
中有这些文件file_list
transactions_010116.csv
transactions_020116.csv
transactions_check_010116.csv
transactions_check_020116.csv
我想删除transactions_check_010116.csv
和transactions_check_020116.csv
,并在使用^transactions_[0-9]+
时保留前两个
我一直在尝试使用find
之类的东西,但是这个表达式会删除文件夹中的所有内容,而不仅仅是与模式不匹配的文件:
find /my_file_location -type f ! -regex '^transactions_[0-9]+' -delete
我在这里尝试做的是使用正则表达式查找不以^transactions_[0-9]+
开头的文件夹中的所有文件并删除它们。
答案 0 :(得分:1)
grep 有-v选项来grep与提供的正则表达式不匹配的所有内容:
find . | grep -v '^transactions_[0-9]+' | xargs rm -f
答案 1 :(得分:1)
根据您的实现,您可能必须使用选项-E来允许使用完整的正则表达式。另一个问题是-regex
为您提供了几乎完整的路径,从您传递的目录开始。
所以正确的命令应该是:
find -E /my_file_location ! -regex '.*/transactions_[0-9]+$' -type f -delete
但你应该首先与-print
发布相同的内容以确保...