-uオプションをサポートしていないSolarisシステムでcp -uをどのように使用しますか?

-uオプションをサポートしていないSolarisシステムでcp -uをどのように使用しますか?

ソースファイルがターゲットファイルより最新の場合、またはターゲットファイルが見つからない場合にのみコピーしたいと思います。ご存知のように、この機能は次のコマンドを使用してLinuxシステムで実行されます。

cp -u /source/*.txt /destination/  

しかし、Solarisシステム10でこのコマンドを使用すると、私の結果は次のようになります。

cp: illegal option -- u
Usage: cp [-f] [-i] [-p] [-@] f1 f2
cp [-f] [-i] [-p] [-@] f1 ... fn d1
cp -r|-R [-H|-L|-P] [-f] [-i] [-p] [-@] d1 ... dn-1 dn 

解決策はありますか?

ベストアンサー1

cp -u非組み込みLinuxでは標準ですが、Solarisでは標準ではないGNU coreutilsの機能です。

Solaris またはその他の POSIX 互換システムでは、次のものを使用できます。pax、同様の機能があります。このコマンドはpaxPOSIX Historyコマンドに代わるもので、パススルーモードと似ています。オプションはGNUのオプションと似ています(両方と同じ履歴アーカイバから取得されます)。cpiotarcp -R-ucptarar

cd /source
pax -rw -u *.txt /destination

(いやpax -rw -u /source/*.txt /destination、それでは生成されるから/destination/source/file.txtです)

1多くのLinuxディストリビューションは、基本インストールからpaxを省略しますただし、常にパッケージとして提供されます。

おすすめ記事