【发布时间】:2020-05-20 07:14:10
【问题描述】:
我想删除超过 1 天的具有某种模式的文件(例如以“测试”开头),我有:
mydir=/find/my/path
find $mydir -type f -mtime -1\
-regextype egrep -regex '$mydir\/test.*'\
-delete
但它并没有为我删除文件,我试过了
mydir=/find/my/path
find $mydir -type f -mtime -1\
-regextype egrep -regex '.*\/test.*'\
-delete
这个有效。为什么第一个不起作用?根据 'find' using regex with variables 我可以在查找正则表达式中使用变量,有什么问题?
【问题讨论】:
-
shell中的单引号和双引号有什么区别?
-
你也不需要正则表达式,顺便说一句。只需一个普通的文件 glob 即可:
find "$mydir" -type -f -mtime -1 -name "test*" -delete -
@code3:除了 gaganshera 的(正确)答案之外:你为什么在这样一个简单的情况下使用正则表达式?
find $mydir -type f -mtime -1 -name 'test*' -delete也可以。 -
@Shawn 和@user1934428 有细微的差别。您的命令会删除
mydir/dir/test但不会删除mydir/testdir/file而-regex "$mydir/test.*"会删除mydir/testdir/file但不会删除mydir/dir/test。
标签: regex linux bash shell find