我有一组命名相似的文件:
TEXT_TEXT_YYYYMMDD
示例文件名:
My_House_20170426
我正在尝试删除与此格式不匹配的所有文件。每个文件都应该有一个文本字符串后跟一个下划线,后跟另一个文本字符串和另一个下划线,然后是YYYYMMDD的日期戳。
有人可以提供一些关于如何构建find
或remove
语句的建议,该语句将删除与此格式不匹配的文件吗?
答案 0 :(得分:4)
使用find
,一旦确定有效,就将-delete
添加到最后。
# gnu find
find . -regextype posix-egrep -type f -not -iregex '.*/[a-z]+_[a-z]+_[0-9]{8}'
# OSX find
find -E . -type f -not -iregex '.*/[a-z]+_[a-z]+_[0-9]{8}'
故意仅匹配TEXT的字母字符。如果您需要数字,请将0-9
添加到每个TEXT区域,例如[a-z0-9]
。
答案 1 :(得分:1)
grep -v '(pattern)'
将过滤掉与模式匹配的行,留下那些不匹配的行。您可以尝试在ls
的输出中使用管道。如果你特别勇敢,你可以将输出管道输出到xargs rm
之类的东西。但删除有点可怕,所以可能先将输出保存到文件中,查看它,然后删除列出的文件。