如何查找以~和pyc结尾的文件?

如何查找以~和pyc结尾的文件?

我想找到以“~”或“pyc”结尾的所有文件(在当前目录和所有子目录中)。为此,我尝试了以下find模式:

find . -name '*{~,pyc}'
find . -name '{*~,*.pyc}'

但两者都没有列出目录中存在的任何文件。为什么这些模式不起作用?怎样做才正确呢?

当使用ls代替find(不带引号)时,我得到了预期的结果(除了ls只显示当前的目录而不是所有子目录)。

答案1

find . -type f \( -name "*~" -o -name "*pyc" \)

这将返回所有以或 ( -type f) 结尾的文件 ( ) 。~-opyc

答案2

如果你有 GNU find,使用正则表达式会容易得多,

find . -regextype posix-egrep -regex '.*(~|pyc)$'

PS 我猜你正在使用 shell 扩展和 find 吗?如果是这样,那是不可能的,请改用find . -name '*.pyc' -o -name '*~'

答案3

如果您追求紧凑性,请使用zsh

printf '%s\n' **/*(~|pyc)(.D)

D也适用于点文件,.仅适用于常规文件)

如果您想使用外壳大括号扩展,则必须执行以下操作:

eval 'find . -type f ! \(' '! -name \*'{~,pyc} '\)'

shell 扩展为:

eval 'find . -type f ! \(' '! -name \*~' '! -name \*pyc' '\)'

然后要求 shell 评估此命令行:

find . -type f ! \( ! -name \*~ ! -name \*pyc \)

相关内容