在目录中查找特定字符串并复制对应文件的命令行问题求助
解决grep筛选文件并复制的两个问题
问题1:路径不存在报错
你命令里的路径~Documents少了斜杠,正确写法是~/Documents——~代表用户主目录,后面必须跟/才能正确解析子路径。另外,grep -r(递归搜索)和/*.txt搭配容易出现shell路径展开问题,建议用--include="*.txt"参数指定只搜索txt文件,避免不必要的错误。
问题2:精准匹配数字后的小写r
需要用正则表达式匹配数字紧跟小写r的模式,用[0-9]r即可(匹配任意单个数字后面的r)。配合grep -E启用扩展正则语法,能让匹配规则更简洁,避免转义字符的麻烦。
修正后的完整命令
grep -l -r -E "[0-9]r" --include="*.txt" ~/Documents/Splicing/revs_POSTr | xargs -I '{}' cp '{}' ~/Documents/Splicing/Misspliced
关键参数说明:
-l:只输出匹配到的文件名-r:递归搜索目标目录下的所有文件-E:启用扩展正则表达式,简化匹配规则写法[0-9]r:精准匹配任意数字后面的小写r--include="*.txt":只搜索后缀为txt的文件,减少无效遍历
内容的提问来源于stack exchange,提问作者Birdstrike
相关产品推荐
相关产品推荐

