regex - linux递归复制指定的文件不起作用

标签 regex linux macos terminal

我想递归复制目录data中所有以字母开头的文件到目录test。所以我写了这个:

find data -type f -exec grep '^[a-z]' {} \; -exec cp -f {} ./test \;

但是,它也匹配其他文件。

代码有什么问题?

最佳答案

您的命令未执行 grep在文件名上,而是在这些文件的内容上。

你说:

copy all the files which start with letters in directory

这将使用 find命令匹配需要 -name 的文件名选项。例如,

find data -type f -name '[a-z]*'

通过使用 -exec选项来查找,而不是在 grep '^[a-z]' {} 的每个文件上执行提供的命令 ( find )在数据目录中查找,因为没有文件名匹配子句 ( -name )。

您可能需要的命令是:

find data -type f -name '[a-z]*' -exec cp -f {} ./test \;

关于regex - linux递归复制指定的文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37017969/

相关文章:

c - 在 Linux 中使用 C 实现零 RAM

macos - 在 OS X 上构建多架构 OpenSSL

ruby - 有什么办法可以缩短这个正则表达式吗?

regex - 如何规范/关联Google表格中的Unicode字符?

linux - Glibc 配置错误

c - 来自 C 程序的 Bash 内部命令(Ubuntu v/s MacOS)

objective-c - 如何在 OSX 上使用 CNContactViewController 显示 CNContact

regex - 使用 Perl 自动进行形态标记

java - 为什么 Mattcher 在成功找到后会抛出异常

c++ - 我在哪里放置第三方库来设置 C++ Linux 开发环境?