我有一个工作grep
命令,用于选择符合特定条件的文件。如何从grep
命令中获取所选文件并将其输入cp
命令?
以下尝试在cp
结束时失败了:
grep -r "TWL" --exclude=*.csv* | cp ~/data/lidar/tmp-ajp2/
cp:丢失后的目标文件操作数 '/ home / ubuntu / data / lidar / tmp-ajp2 /'试试cp --help'更多 信息。
cp `grep -r "TWL" --exclude=*.csv*` ~/data/lidar/tmp-ajp2/
cp:无效选项 - ' 7'
答案 0 :(得分:29)
grep -l -r "TWL" --exclude=*.csv* | xargs cp -t ~/data/lidar/tmp-ajp2/
说明:
-l
选项仅输出文件名-t
选项指定目标目录(并避免使用占位符)答案 1 :(得分:16)
占位符选项需要 xargs :
grep -r "TWL" --exclude=*.csv* | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
通常如果您使用xargs
,它会将输出放在命令之后,使用占位符(在这种情况下为'{}'
),您可以选择它所在的位置插入,甚至多次。
答案 2 :(得分:4)
这对于搜索具有特定日期的文件非常有用:
i
答案 3 :(得分:0)
要将文件复制到grep找到的目录,请使用-printf输出目录,使用-i从xarg(管道后)放置命令参数
find ./ -name 'filename.*' -print '%h\n' | xargs -i cp copyFile.txt {}
将copyFile.txt复制到包含“filename”
的所有目录(./。)答案 4 :(得分:0)
grep -rl'/ directory /'-e'pattern'| xargs cp -t /目录