
同じcp -rf *
ですが、隠しディレクトリ( . で始まるディレクトリ)とその内容を除いて繰り返しコピーするにはどうすればよいですか。
答え1
特定のファイルを除いてディレクトリツリーをコピーするのに適したオプションは次のとおりです。
同期:これは基本的にcpに多くの除外の可能性が加わったものです。
rsync -a --exclude='.*' /source/ /destination
公園:いくつかの除外があり、POSIXにあるので、どこでも使用できます(一部のLinuxディストリビューションでは、何らかの理由でデフォルトのインストールには含まれません)。
cd /source && mkdir -p /destination && \ pax -rw -pp -s '!.*/\..*!!' . /destination
答え2
またはを使用cp
できます。rsync
--exclude=PATTERN
答え3
すべてをコピーできます。
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