Viesturs Asked: 2018-03-02 07:40:20 +0800 CST2018-03-02 07:40:20 +0800 CST 2018-03-02 07:40:20 +0800 CST 可执行文件(二进制文件)上的通配符 772 我可以使用通配符通过扩展名选择某些类型的文件,例如 mv *.cc src/ 如何选择没有扩展名的可执行文件? file-format wildcards 2 个回答 Voted Best Answer Rinzwind 2018-03-02T07:50:49+08:002018-03-02T07:50:49+08:00 这将检查可执行位并将您所在目录中的所有文件移动到src/. find . -maxdepth 1 -type f -perm +a=x -print0 | xargs -0 -I {} mv {} src/ 这不会检查文件名是什么(因此 xxxx 和 xxxx.cc 以及其他任何内容只要它是“文件”(-type f)设置“x”(eXecute)权限(-perm +a=x)就会被移动)。 steeldriver 2018-03-02T10:17:06+08:002018-03-02T10:17:06+08:00 AFAIK bash glob 不支持 - 但 zsh 通过它的glob qualifiers支持。 例如,可执行纯文件的限定符是(相当令人困惑)*例如 ls -l *(*) 将列出可执行的二进制文件和脚本。它还没有明确地为二进制文件提供限定符,但是它确实允许您按照zsh glob 限定符中所述定义自己的限定符以排除二进制文件,例如,您可以这样做 mv -- *(*e:'file --brief --mime $REPLY | grep -q binary':) exec/ 或定义一个辅助函数 binary() { file --brief --mime $REPLY | grep -q binary } 然后 mv -- *(*+binary) exec/ (我添加--brief以防止文件名可能出现错误匹配。)
这将检查可执行位并将您所在目录中的所有文件移动到
src/
.这不会检查文件名是什么(因此 xxxx 和 xxxx.cc 以及其他任何内容只要它是“文件”(
-type f
)设置“x”(eXecute)权限(-perm +a=x
)就会被移动)。AFAIK bash glob 不支持 - 但 zsh 通过它的glob qualifiers支持。
例如,可执行纯文件的限定符是(相当令人困惑)
*
例如将列出可执行的二进制文件和脚本。它还没有明确地为二进制文件提供限定符,但是它确实允许您按照zsh glob 限定符中所述定义自己的限定符以排除二进制文件,例如,您可以这样做
或定义一个辅助函数
然后
(我添加
--brief
以防止文件名可能出现错误匹配。)