たとえば、レベル 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
を使うのが好きです 制御レイヤーを追加して、ファイルシステム全体を誤ってコピーしないようにします。しかし、それは自由に削除してください。