我在查看Bash脚本时发现了这个命令行!我的问题是这个命令是做什么的,这个命令是否正确?
find / -name "*.src" | xargs cp ~/Desktop/Log.txt
答案 0 :(得分:3)
在.src
中找到包含/
扩展名的文件或目录,并将文件~/Desktop/Log.txt
复制为查找结果' s
例如,如果find命令的输出是
file.src
directory1.src
file2.src
xargs
命令将执行cp ~/Desktop/Log.txt file.src directory1.src file2.src
这没有任何意义。
答案 1 :(得分:2)
该命令是什么
find / -name "*.src"
说明:递归查找/
中的所有常规文件,目录和符号链接,其文件名以.src
结尾
|
说明:将stdout从管道左侧的命令重定向到右侧命令的stdin
xargs cp ~/Desktop/Log.txt
说明:构建一个cp
命令,从stdin获取参数并将它们附加到命令末尾的空格分隔列表中。如果xargs
(通常由ARG_MAX
限定)的预定义缓冲区空间用尽,则将执行多个cp
命令,
e.g。 xargs cp arg100 .... arg900
可以cp a100 ... a500; cp a501 ... a900
注意 cp
的行为会因其参数的不同而有很大差异
~/Desktop/Log.txt
是唯一的参数,cp
将抛出stderr cp
的最后一个参数是目录
cp
有2个参数,第一个是普通文件。然后第二个参数文件的内容将被第一个参数的内容覆盖cp
会抛出一个stderr 总而言之,这里有太多的变量可以让您的命令行为真正被精确定义。因此,我怀疑,你想做别的事情。
应该是什么
我的猜测是该命令的作者可能想将stdout重定向到日志文件(注意每次运行命令时都会覆盖日志文件)
find / -name "*.src" > ~/Desktop/Log.txt
此外,如果您只是寻找具有.src
扩展名的常规文件,您还应该将-type f
选项添加到find
find / -type f -name "*.src" > ~/Desktop/Log.txt
答案 2 :(得分:0)
它找到与*.src
中的模式/
匹配的每个文件或目录。
然后将文件~/Desktop/Log.txt
复制到上一个命令的每个结果。