这应该是一个非常简单的任务:我想获取任何旧命令的stdout的每一行,并使用每个命令执行另一个命令作为参数。
例如:
ls | grep foo | applycommand'mv%s bar /'
这会使所有内容与“ foo ”匹配并将其移至条形码/目录。
(我觉得有点尴尬,询问可能是一个非常明显的解决方案。)
答案 0 :(得分:14)
该程序名为xargs
。
ls | grep foo | xargs -I %s mv %s bar/
答案 1 :(得分:7)
ls | grep foo | while read FILE; do mv "$FILE" bar/; done
这个特殊的操作可以更简单地完成:
mv *foo* bar/
或者是递归解决方案:
find -name '*foo*' -exec mv {} bar/ \;
在find
命令{}
中将替换为匹配的文件列表。
答案 2 :(得分:0)
对于你的情况,这样做就像这样。
for file in *foo*
do
if [ -f "$file" ];then
mv "$file" /destination
fi
done
如果您不关心目录或文件,请将其删除
mv *foo* /destination