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


13

のように再帰的にコピーしますcp -rf *が、隠しディレクトリ(。で始まるディレクトリ)とそのコンテンツを除外するにはどうすればよいですか?

回答:


6

あなただけですべてをコピーすることができます

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

30

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.