コピー[cpを使用]の問題

コピー[cpを使用]の問題

複数のサブフォルダをインストールしました/mnt。一つは/mnt/データ、もう一つ/mnt/1804iso。これ/データ別のディスクからインストールされたデータフォルダとファイルが含まれています。/1804isoフォルダにコピーするコンテンツを含むマウントされたISOファイルが含まれています。/メディア/ベニー/0EB4-95E2/これはマウントされたフラッシュドライブです。

だから開いた。強く打つそして入力sudo cp -Rn /mnt/1804iso/.* /media/benny/0EB4-95E2/。私は通常ワイルドカードアスタリスクの前のピリオドを省略します。/*/しかし、これはISOの隠しファイルをコピーしません。したがって、このコマンドを使用すると奇妙なことが起こります。 ISOファイルが正しくコピーされると、コピーが開始されます。/mnt/データフォルダやファイルも同様です。コマンド部分の理解が/mnt/1804iso/.*完全に欠陥がない限り、フォルダが参照されないため、なぜこれが起こるのか理解できません。

自分の/mnt/dataフォルダがコピーに含まれている理由を誰か説明できますか?

ベストアンサー1

.*隠されたファイルに拡張され、.これは..Bashの不幸な部分です。ファイル名拡張子有効:最初の文字と任意の数の文字で構成され、一致し、..含まれる名前のディレクトリエントリがあります。..*

たとえば、次のように実行すると、このような状況が発生することがわかります。

echo /mnt/1804iso/.*

残りの部分と一緒に一覧表示され/mnt/1804iso/.ます/mnt/1804iso/..

../dataあなたのディレクトリですdata。ターゲットでは、次のディレクトリ構造が作成されます。

.hidden
xyz
data/
data/...
1804iso/.hidden
1804iso/xyz
...

つまり、実際には二つコピーしたいすべてのもののコピーとコピーしたくないすべてのもののコピー。を使用すると、cp -Rnv何をコピーしているのか、どこにコピーしているのかを確認できます。

これを行うには、他のシェルがより良いです。 zshでは、欲しいものに近いです。ただ隠しファイルがコピーされます。 Bashでは、次のcp src/.[^.]* destものを使用できます。ほぼzsh の動作を一致させ、両方のソース位置をリストします。またはできますshopt -s dotglob事前に走ってくださいsrc/*次に展開します。含むファイルをクリックしますが入らないようにする.と項目..(ただし、後でやりたくないことをすることがありますのでご注意ください)。


あなたが本当にやりたいことをするには、次のものを使用することをお勧めします。同期代わりに:

rsync -avx /mnt/1804iso/ /media/benny/0EB4-95E2/

コピーされますコンテンツ1804iso隠しファイルを含むターゲットディレクトリ(最後のスラッシュに注意してください!)に移動します。

おすすめ記事