如何在目录中搜索包含特定文本的文件并将它们复制到另一个目录?我正在使用 .ksh shell。
答案1
做man xargs
并观察-I
旗帜。
find /path/to/directory -type f -exec grep -il "your pattern" {} \; | xargs -I % cp % /dest/dir/
要保存输入,请将此命令放入 shell 脚本中:
#!/usr/bin/ksh
# Script name: locate
find /path/to/directory -type f -exec grep -il "$1" {} \; | xargs -I % cp % /dest/dir/
要运行,请输入您要搜索的文本所在的位置locate searchstring
。searchstring
答案2
您只需从要搜索的基本目录中执行即可
cp $(grep -r -l "the pattern" *) target_directory
grep -r
意味着回避-l
表示列出文件路径而不是其中的匹配项。放置
$()
命令将执行它并将结果放置在外部命令中。cp 将获取文件列表,只要最后一个路径是目录,请将它们全部复制到那里。