【问题标题】:Usage of find in solaris comparing to linux/mac与 linux/mac 相比,solaris 中 find 的用法
【发布时间】:2013-09-23 07:07:59
【问题描述】:

我只想将以 .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

我阅读了手册页,但找不到解决方案。

你知道怎么解决吗?

【问题讨论】:

  • find 命令很好——不同的是它执行的“cp”命令,以及您需要阅读的“cp”手册页。如果您在 Solaris 10 系统上安装 GNU coreutils 软件包中的 GNU cp,它可能会起作用。

标签: linux macos find solaris cp


【解决方案1】:

此脚本不使用任何 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' - {} +

【讨论】:

  • 这对我不起作用,因为这个脚本总是将下一个源文件复制到同一个目标目标。 cp -i file1.php file1.php cp -i file2.php file1.php cp -i file3.php file1.php
  • 抱歉,代码已修复(我不应该对单个文件进行测试...)。
【解决方案2】:

我发现另一个在 solaris 上为我工作的班轮:

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

【讨论】:

  • 此命令将覆盖现有文件而不提示。 “-print”不是必需的。
  • 你是对的。你的脚本是比这个 oneliner 更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 2012-04-15
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 2011-04-06
相关资源
最近更新 更多