Bor*_*lis 26 linux shell grep cp
我有一个工作grep
命令,可以选择满足特定条件的文件.如何从grep
命令中获取所选文件并将其输入cp
命令?
以下尝试cp
最终失败:
grep -r "TWL" --exclude=*.csv* | cp ~/data/lidar/tmp-ajp2/
Run Code Online (Sandbox Code Playgroud)
cp:在'/ home/ubuntu/data/lidar/tmp-ajp2 /'之后缺少目标文件操作数'尝试'cp --help'以获取更多信息.
cp `grep -r "TWL" --exclude=*.csv*` ~/data/lidar/tmp-ajp2/
Run Code Online (Sandbox Code Playgroud)
cp:无效选项 - '7'
kos*_*tya 32
grep -l -r "TWL" --exclude=*.csv* | xargs cp -t ~/data/lidar/tmp-ajp2/
Run Code Online (Sandbox Code Playgroud)
说明:
-l
选项仅输出文件名-t
选项指定目标目录(并避免使用占位符)Chr*_*aes 22
你需要带有占位符选项的xargs:
grep -r "TWL" --exclude=*.csv* | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
Run Code Online (Sandbox Code Playgroud)
一般来说,如果你使用xargs
,它将把输出后的命令,用占位符('{}'
在这种情况下),你可以选择在那里插入的位置,甚至多次.
当搜索具有特定日期的文件时,这对我有用:
ls | grep '2018-08-22' | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
Run Code Online (Sandbox Code Playgroud)