特定の拡張子を持たないすべてのファイルを別のディレクトリにコピーする方法は?

特定の拡張子を持たないすべてのファイルを別のディレクトリにコピーする方法は?

2つのディレクトリがあり、拡張子が.であるファイルを除くdir1すべてのファイルdir2とフォルダをコピーしたいと思います。どうすればいいですか?dir1dir2.txt

答え1

rsyncオプションと一緒に使用されます--exclude

rsync -av --exclude '*.txt' dir1/ dir2/

答え2

POSIX的に:

cd dir1 && LC_ALL=C pax -rwpe -'s|.*\.txt||' . ../dir2

少なくとも実装ではhttp://www.mirbsd.org/pax.htm(例:MirBSDまたはDebianpaxのパッケージ内のエントリ).txtシンボリックリンク名自体がで終わらない場合でも、ターゲットで終わるシンボリックリンクも除外されます.txt

別の違いはrsync除外されますが、目次名前で終わる.txtこれらのディレクトリのtxt以外のファイルは除外されません。を追加すると、-s'|.*\.txt/.*||'これらの項目も除外されます。

-peできるだけ多くのメタデータを保存してください。メタデータのリストは実装によって異なりますpax。 ()オプションを使って保持する内容を選択してくださいrsync-a-rlptgoD-AXUHN

関連情報