回答:
その理由はbash
、に*
はドット(.
)で始まるファイルが含まれていないためです。
走れます
cp A/.* B
コピーし.
たり..
、サブディレクトリやサブディレクトリを作成しなかったことを警告しますが、これは問題ありません。
または、ドットファイルと通常のファイルを一緒にコピーする場合は、実行します
cp A/.* A/* B
また、実行することができます
shopt -s dotglob
cp A/* B
で動作しますがbash
、動作しませんsh
。
また、サブディレクトリがコピーされることを気にしない場合、これが最も簡単です:
cp -R A/ B
ヒント:ワイルドカードが期待どおりに動作しない場合は、エコーで実行してみてください。例
$ echo A/*
A/file1 A/file2
$ echo A/.*
A/. A/.. A/.hidden1 A/.hidden2
$ echo A/.* A/*
A/. A/.. A/.hidden1 A/.hidden2 A/file1 A/file2
$ shopt -s dotglob
$ echo A/*
A/file1 A/file2 A/.hidden1 A/.hidden2
-R
うまく機能するはずです。間違っていると思う場合は、その理由を説明してください。
bashの場合、dotglob
コピーする前に設定できます
shopt -s dotglob
cp A/* /destination
またはプログラミング言語
$ ruby -rfileutils -e 'Dir[".*"].each {|x| FileUtils.copy(x,"/destination") if File.file?x}'
ドットグロブを設定したくない場合は、
cp A/.* /destination 2>/dev/null
あなたが探しているのは、次のようなものです。
cp A/.??* B/
これはすべてのドットファイルに一致しますが、「。」には一致しません。または「..」。上記のソリューションのほとんどは、再帰的に作業していない限り問題ありません。しかし、次のようなことをしたいとすぐに:
cp -R A/.??* B/
「..」を省略することなく、非ドットファイルを含むすべてを親ディレクトリからコピーします。
.a
またはのような単一の文字であるドットファイルを見逃します.x
。最短グロブパターンは私が試合を除くすべてのドットファイルがあることを発見した.
と..
あります.[^.]*
。
私は次を試してみましたが、見つけるだけで動作します...
cp A/.* B/
A/.
とA/..
へのパラメータとしてcp
ケースOPに問題となる可能性があり、また、(使用してディレクトリをコピーする必要があるcp -r
)
それはcp
のせいではなく、bashです:bashは*
すべての隠されていない(つまり、で始まる非.
)ファイルで展開します。
Bashは.*
(したがってA/.*
、あなたの場合)で始まるすべてのファイルで展開されます.
が、不幸なことに.
、..
おそらくスキップしたいand (現在および親ディレクトリ)も含まれます。(いくつかのオプションを設定した後、zshのような他のシェルにはシェルが含まれず、IIRCもbashすることに注意してください)。
簡単な解決策は削除することができ.
、および..
マッチしたファイルから、.*
このような(非常に)ハックの方法で、:
cp $( for F in A/.*; do echo $F | grep -v "^\.*$"; done ) B
またはこれ(おそらくクリーナー:find
コピーするファイルを見つけるために使用します):
cp $( find A -maxdepth 1 -mindepth 1 -name ".*" ) B
しかし、よりクリーンなソリューションを見つけることができるでしょう。
すべてがドットで始まる場合は、単に使用しますA/.*
。
[holt@Michaela test]$ cp A/* B
cp: cannot stat `A/*': No such file or directory
[holt@Michaela test]$ cp A/.* B
cp: omitting directory `A/.'
cp: omitting directory `A/..'
[holt@Michaela test]$ ls -al B
total 8
drwxrwxr-x. 2 holt holt 4096 2011-03-31 16:57 .
drwxrwxr-x. 4 holt holt 4096 2011-03-31 16:57 ..
-rw-rw-r--. 1 holt holt 0 2011-03-31 16:57 .a
-rw-rw-r--. 1 holt holt 0 2011-03-31 16:57 .b
-rw-rw-r--. 1 holt holt 0 2011-03-31 16:57 .c
お役に立てれば!
-r
。がなければ-r
、ディレクトリをスキップします。