Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
solaris中find的使用与linux/mac的比较_Linux_Macos_Find_Solaris_Cp - Fatal编程技术网

solaris中find的使用与linux/mac的比较

solaris中find的使用与linux/mac的比较,linux,macos,find,solaris,cp,Linux,Macos,Find,Solaris,Cp,我只想将以.php结尾的文件复制到另一个目录: 在Linux中,我有以下命令: find projects/ -name '*.php' -exec cp -iv --parents -t copy/ {} + 在Mac中,这也起作用: find projects/ -name '*.php' -exec gcp -iv --parents -t copy/ {} + 在Solaris 10中: cp: illegal option -- v cp: illegal option -- pa

我只想将以.php结尾的文件复制到另一个目录:

在Linux中,我有以下命令:

find projects/ -name '*.php' -exec cp -iv --parents -t copy/ {} +
在Mac中,这也起作用:

find projects/ -name '*.php' -exec gcp -iv --parents -t copy/ {} +
在Solaris 10中:

cp: illegal option -- v
cp: illegal option -- parents
cp: illegal option -- t
我阅读了手册页,但找不到解决方案


您知道如何解决它吗?

此脚本不使用任何Gnu特定的功能,因此应适用于任何Unix/POSIX系统:

find projects/ -name "*.php" -exec sh -c 'for i do
    mkdir -p `dirname copy/$i`
    (set -x; cp -i $i copy/$i)
done' - {} +

我发现另一个单行程序在solaris上为我工作:

find projects/ -name '*.php' -print | cpio -pdm copy/

这对我不起作用,因为此脚本总是将下一个源文件复制到同一目标。cp-i file1.php file1.php cp-i file2.php file1.php cp-i file3.php file1.phpSorry,代码已修复(我不应该使用单个文件进行测试…)。find命令很好-它执行的是不同的“cp”命令,以及您需要阅读的“cp”手册页。如果您从Solaris 10系统上的GNU coreutils包安装GNU cp,该命令可能会起作用。此命令将覆盖现有文件,而无需提示。“-print”不是必需的。你是对的。您的脚本是比此oneliner更好的解决方案。