ファイル名リストからファイルをコピーし、既存のファイルを無条件に保存する方法は?
cpioはデフォルトで既存のファイルを上書きします。
$ dpkg -L libgcc1 libstdc++6 |grep -e '^/lib/' -e '^/usr/lib/' | cpio -pdv ./test
./test/lib/i386-linux-gnu
cpio: ./test/lib/i386-linux-gnu/libgcc_s.so.1 not created: newer or same age version exists
./test/usr/lib/i386-linux-gnu
cpio: ./test/usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 not created: newer or same age version exists
cpio: ./test/usr/lib/i386-linux-gnu/libstdc++.so.6 not created: newer or same age version exists
0 blocks
$ touch -ht 200102030405 $(find . )
$ dpkg -L libgcc1 libstdc++6 |grep -e '^/lib/' -e '^/usr/lib/' | cpio -pdv ./test
./test/lib/i386-linux-gnu
./test/lib/i386-linux-gnu/libgcc_s.so.1
./test/usr/lib/i386-linux-gnu
./test/usr/lib/i386-linux-gnu/libstdc++.so.6.0.22
./test/usr/lib/i386-linux-gnu/libstdc++.so.6
3222 blocks
$ #same version
$ dpkg -L libgcc1 libstdc++6 |grep -e '^/lib/' -e '^/usr/lib/' | cpio -pdv ./test
./test/lib/i386-linux-gnu
cpio: ./test/lib/i386-linux-gnu/libgcc_s.so.1 not created: newer or same age version exists
./test/usr/lib/i386-linux-gnu
cpio: ./test/usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 not created: newer or same age version exists
cpio: ./test/usr/lib/i386-linux-gnu/libstdc++.so.6 not created: newer or same age version exists
0 blocks
$ cp --version
cp (GNU coreutils) 8.26
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering.
$
ベストアンサー1
これを行う方法はありませんcpio
。
ただし、これを使用してstar
操作を完了できます。ただ電話してください:
star -xpk < archive-name
注:GNU cpioが正しく機能しているかどうかはわかりませんが、cpioは最初にファイルを一時的な名前で抽出し、成功すると非破壊的なrename(2)
性的モードを呼び出して古い名前を置き換える文書化されていない関数を持っているため、システム管理によく使用されます。ファイルモード。したがって、公式cpio
(GNU cpioである必要はありません)はinstall
プログラムのように動作します。
アスタリスクでこの動作をしたい場合は、この-install
オプションを追加してください。