ソースファイルがターゲットファイルより最新の場合、またはターゲットファイルが見つからない場合にのみコピーしたいと思います。ご存知のように、この機能は次のコマンドを使用して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
、同様の機能があります。このコマンドはpax
POSIX Historyコマンドに代わるもので、パススルーモードと似ています。オプションはGNUのオプションと似ています(両方と同じ履歴アーカイバから取得されます)。cpio
tar
cp -R
-u
cp
tar
ar
cd /source
pax -rw -u *.txt /destination
(いやpax -rw -u /source/*.txt /destination
、それでは生成されるから/destination/source/file.txt
です)
1多くのLinuxディストリビューションは、基本インストールからpaxを省略します。ただし、常にパッケージとして提供されます。