web-dev-qa-db-ja.com

隠しディレクトリを除いて再帰的にコピーする

cp -rf *のように再帰的にコピーする方法はありますが、隠しディレクトリ(。で始まるディレクトリ)とその内容は除外しますか?

13
uray

あなたは単にすべてをコピーすることができます

cp -rf 

そして宛先で隠しディレクトリを削除します

find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf

または、高度なtar(例GNU tar))がある場合は、tarを使用して一部のパターンを除外することもできます。ただし、非表示のディレクトリのみを除外することはできませんが、隠しファイル。

たとえば、次のようなもの:

tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x

ところで、GNU tarには除外スタイルオプションの動物園があります。私のお気に入りは

--exclude-vcs
6
maxschlepzig

一部のファイルを除いて、ディレクトリツリーをコピーするための適切なオプションは次のとおりです。

  • rsync:これは基本的にcpと大量の除外の可能性です。

    rsync -a --exclude='.*' /source/ /destination
    
  • pax:いくつかの除外機能があり、POSIXに含まれているため、どこでも利用できるはずです(一部のLinuxディストリビューションでは、何らかの理由でデフォルトのインストールに含まれていません)。

    cd /source && mkdir -p /destination && \
    pax -rw -pp -s '!.*/\..*!!'  . /destination
    

cpの代わりに、rsync--exclude=PATTERN

8
xenoterracide