GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで非表示の(ドットで始まる)ファイルとサブディレクトリをコピーする方法は?

たとえば、レベル A の非表示のファイルとフォルダーのみを探していて、それを望まない限り

A/b/.hidden

コピーするには、これを使用できるはずです:

cp -r A/.[^.]* B

これは基本的に、. で始まるものをすべてコピーすることを意味します。 . 以外の任意の文字 . を除外します と ..

編集:アスカーが所有権、日付などを保持することを望んでいないため、cp コマンドから -p を削除しました。


A/.* の問題 ディレクトリ . があることです A で これもパターンに一致します。

拡張グロブ パターンをオンにして、以下を使用できます:

shopt -s extglob
cp -r A/.!(?(.)) B    

名前がドットで始まり、2 番目の文字がドットでもゼロでもないファイルに一致します ( ?(.) は、何もドットにも一致しません。!(...) はそれを否定します。つまり、!(?(.)) はそれ以外のすべてに一致します)。なしまたはドットよりも)


このような場合は find を使用することをお勧めします cp の代わりに このように:

find A/ -type f -maxdepth 1 -name '.*' -exec cp -p {} B/ \;

基本的な構文は次のように分類されます:

  • find A/ -type f :find ディレクトリ A/ 内のアイテム そのタイプは (ディレクトリではなく) ファイルです…
  • -maxdepth 1 -name '.*' :maxdepth の場合はこれに 1 つのディレクトリのうち name . で始まる .
  • -exec cp -p {} B/ \; :これらのファイルが見つかったら、 exec cp -p のコマンド ソースからの日付/時刻を保持するためのフラグ ({} ) B/ の宛先へ .

maxdepth を使うのが好きです 制御レイヤーを追加して、ファイルシステム全体を誤ってコピーしないようにします。しかし、それは自由に削除してください。


Linux
  1. Linux および Unix でファイルをコピーする方法10 cp コマンドの例

  2. 「cp」および「mv」コマンドを使用してLinuxでファイルとディレクトリをコピー/移動する方法

  3. ドットで始まる名前のファイルをコピーするにはどうすればよいですか?

  1. Linuxでgocryptfsを使用してファイルを暗号化する方法

  2. LinuxでSUIDおよびSGID権限を持つファイルを検索する方法

  3. Linuxでファイルとディレクトリを圧縮する方法(例付き)

  1. findおよびduコマンドを使用してLinuxで大きなファイルを検索する方法

  2. Linuxでファイルをアーカイブおよび圧縮する方法

  3. SCP と Rsync を使用して Linux でファイルを転送する方法