これらのファイルのみを含むディレクトリ内のすべてのファイル(すべてのファイルは通常のファイルであり、ディレクトリ内にはディレクトリ、シンボリックリンクなどはありません)を既存の別のディレクトリに移動したいと思います。
たとえば、これらのファイルは非常に一般的な名前を持ち、robots.txt
特定のパターンに従わない。
同様のコマンドを試しました。
cp -a "$HOME"/a "$HOME"/b
私はこれが再帰的にコピーするコマンドと一緒に-a
単純な組み合わせ(スキーマ、所有権、およびタイムスタンプを保持)であることを知っています。-d
-R
コピーが繰り返された場合、ファイルがコピーされないのはなぜですか、回避策は何ですか?
答え1
アプリケーションシナリオ:
ディレクトリは
a
存在しますがb
存在しません:cp -a "$HOME"/a "$HOME"/b
ディレクトリ全体を
a
新しいディレクトリにコピーb
ディレクトリ
a
とb
存在:cp -a "$HOME"/a "$HOME"/b
ディレクトリがコピーされます。
a
~へ目次b
だから、ディレクトリを取得します"$HOME"/b/a
。ディレクトリ
a
とb
存在:cp -a "$HOME"/a/* "$HOME"/b
コピーするコンテンツ~の
a
~へディレクトリはb
除外されますが、隠しファイルとディレクトリは除外されます。一部のシェルにはこれを含むオプションがありますが、最良のアプローチは次のとおりです。cp -a ~/a/. ~/b/
それがあなたが望むものであることを理解しています。
答え2
cp
安全警告:
ディレクトリのコピー
ディレクトリaとbが存在します。
cp -a a b/
cp -a -t b a
a
ディレクトリがディレクトリにコピーされますb
。
ディレクトリaは存在しますが、bは存在しません。
cp -a a b/
cp -a -t b a
おなじみのエラーメッセージが生成されます
ファイルのコピー
ディレクトリbが存在します
cp -T a b
おなじみのエラーメッセージが生成されます
ディレクトリbが存在しません
cp -T a b
ファイルをbにコピーします。
cp/mv/lnのすべてのバージョンに-t
or-T
オプションがあるわけではありませんが、すべてのバージョンでディレクトリを/
保証できます。b
これらのオプションがないと、ディレクトリがb
既存のディレクトリではないという保証はありません。