Linux 如何在shell脚本中将一个命令的o/p赋予另一个命令的参数?
我已经编译了Linux内核,现在我想将所有*.ko文件复制到一个单独的文件夹中 所以 它会给我所有.ko文件的列表。 现在我想把这个列表作为cp命令的参数 像Linux 如何在shell脚本中将一个命令的o/p赋予另一个命令的参数?,linux,shell,terminal,Linux,Shell,Terminal,我已经编译了Linux内核,现在我想将所有*.ko文件复制到一个单独的文件夹中 所以 它会给我所有.ko文件的列表。 现在我想把这个列表作为cp命令的参数 像 那么如何在shell脚本和终端上实现这一点呢?根据我认为下面的代码应该满足您的需要。我只是试了一下。 将结果存储在变量中,然后循环逐个提取数据 #! /bin/bash $op = find ./kernel -name *.ko" for zf in $op do cp -rpf $zf tail $zf done
那么如何在shell脚本和终端上实现这一点呢?根据我认为下面的代码应该满足您的需要。我只是试了一下。 将结果存储在
变量中
,然后循环
逐个提取数据
#! /bin/bash
$op = find ./kernel -name *.ko"
for zf in $op
do
cp -rpf $zf
tail $zf
done
根据我认为下面的代码应该满足您的需要。我只是试了一下。 将结果存储在
变量中
,然后循环
逐个提取数据
#! /bin/bash
$op = find ./kernel -name *.ko"
for zf in $op
do
cp -rpf $zf
tail $zf
done
这将找到以
.ko
结尾的所有文件,并将该列表放入循环中,循环遍历每个文件(即使它们有空格,但这里可能不是这样),并复制temp目录中的每个文件
find ./kernel -name "*.ko" | while read file; do cp $file temp/ ; done
这将找到以
.ko
结尾的所有文件,并将该列表放入循环中,循环遍历每个文件(即使它们有空格,但这里可能不是这样),并复制temp目录中的每个文件
find ./kernel -name "*.ko" | while read file; do cp $file temp/ ; done
xargs
通常用于此。但不是在这里
请参阅,find
内置了此功能
试试这个:
find ./kernel -name "*.ko" -exec cp -rpf {} temp/ \;
xargs
通常用于此。但不是在这里
请参阅,find
内置了此功能
试试这个:
find ./kernel -name "*.ko" -exec cp -rpf {} temp/ \;
另一种方法:使用xargs
find ./kernel -name "*.ko" -print0 | xargs -0 cp -rpf -t temp/
另一种方法:使用xargs
find ./kernel -name "*.ko" -print0 | xargs -0 cp -rpf -t temp/
这将无法处理包含空格的文件名。为什么?这有什么问题?如果有一个名为
bla-blue
的文件名,这个for循环将首先将bla
分配给zf
,然后将blue
分配给zf
,从而导致失败。哦,感谢您的解释。当我进入系统时,我会尝试这个方法。这个代码有很多错误:赋值看起来像var=value
,没有空格和前导$
;您需要$(find…
来实际执行它;除非您明确知道何时不使用引号,否则请始终使用引号“$variables”
。这不会处理带有空格的文件名。为什么?这有什么问题?如果有一个名为bla-blue
的文件名,这个for循环将首先将bla
分配给zf
,然后将blue
分配给zf
,从而导致失败。哦,感谢您的解释。当我进入系统时,我会尝试这个方法。这个代码有很多错误:赋值看起来像var=value
,没有空格和前导$
;您需要$(find…
来实际执行它;除非您明确知道何时不使用引号,否则请始终引用“$variables”。但是。。。但是但是find
的-exec
标志正是这样做的!但是但是但是find
的-exec
标志正是这样做的!假设GNU工具,find./kernel-name“*.ko”-exec cp-rpf-t temp/{}+
假设GNU工具,find./kernel-name“*.ko”-exec cp-rpf-t temp/{}+