たとえば、レベル 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/ \;:これらのファイルが見つかったら、execcp-pのコマンド ソースからの日付/時刻を保持するためのフラグ ({})B/の宛先へ .
maxdepth を使うのが好きです 制御レイヤーを追加して、ファイルシステム全体を誤ってコピーしないようにします。しかし、それは自由に削除してください。