cp -r
にディレクトリ内のファイルとディレクトリを絶対的にコピーさせるにはどうすればいいのでしょうか
Requirements:
- 隠しファイルや隠しディレクトリを含めます
- 上記を含むようにフラグを付けて1つのコマンドにしてください
- パターンマッチングに頼る必要は全くありません
私の不細工だけど働いているハックは
cp -r /etc/skel/* /home/user
cp -r /etc/skel/.[^.]* /home/user
パターンマッチングを行わずに、コマンドですべてを行うにはどうすればいいのでしょうか?どのフラグを使用する必要がありますか?
478 eleven81 2009-10-27
ファイルを指定しないでください
cp -r /etc/skel /home/user
(/home/user
は既に存在してはいけないことに注意してください。そうでなければ/home/user/skel
を作成します)
308 Randy Orrison 2009-10-27
新しいフォルダを作成し(または作成しようとしている)、フォルダが作成された後にそのフォルダにファイルをコピーしたいと言いましょう
mkdir /home/<new_user>
cp -r /etc/skel/. /home/<new_user>
これは、すべてのファイル/フォルダを/etc/skel
から再帰的に、最初の行で作成された既存のフォルダにコピーします
553 Bruno Pereira 2011-12-12
これを行うための正しい方法は、-T (--no-target-directory)
オプションを使用して、フォルダを再帰的にコピーすることです (最後のスラッシュやアスタリスクなどを除いて)
cp -rT /etc/skel /home/user
これは /etc/skel
の内容を /home/user
(隠しファイルを含む) にコピーし、フォルダが存在しない場合は /home/user
を作成します; しかし、-T
オプションは、フォルダ /home/user
が存在する場合、/etc/skel
の内容が新しいフォルダ /home/user/skel
にコピーされるのを防ぎます
138 TechnocratiK 2015-09-08
bash
自体には良い解がある、shell option
がある、cp
ができる、mv
ができる、などなど
shopt -s dotglob # for considering dot files (turn on dot files)
and
shopt -u dotglob # for don't considering dot files (turn off dot files)
上記の解法はbash
の標準です
NOTE:
shopt # without argument show status of all shell options
-u # abbrivation of unset
-s # abbrivation of set
75 PersianGulf 2013-02-06
Use rsync:
rsync -rtv source_folder/ destination_folder/
32 user1084282 2014-02-20
rsync
もいいけど、別の選択肢
cp -a src/ dst/
メインのヘルプから
-a, --archive
same as -dR --preserve=all
-d same as --no-dereference --preserve=links
-R, -r, --recursive
copy directories recursively
8 Wink Saville 2014-08-28
一番シンプルな方法は
cp -r /etc/skel/{.,}* /home/user
{.,}*
式には、すべてのファイルとディレクトリが含まれます(ドットで始まるものもあります)
上記の式を使用したくない場合は、cp
プロパティを使用することで、1つのターゲットフォルダに対して複数のソースを指定することができます
cp -r /etc/skel/* /home/user
6 simhumileco 2018-06-06
rsyncを使うといいでしょう
rsync -aP ./from/dir/ /some/other/directory/
sshをコピーすることもできます
rsync -aP ./from/dir/ username@remotehost:/some/other/directory/
いろいろなフラグがあります。-a, –archive # アーカイブ (-rlptgoD)
-r, --recursive
-l, --links # copy symlinks as links
-p, --perms # preserve permissions
-t, --times # preserve times
-g, --group # preserve group
-o, --owner # preserve owner
-D # --devices --specials
--delete # Delete extra files
You may want to add the -P option to your command.
--partial # By default, rsync will delete any partially transferred file if the transfer is interrupted. In some circumstances it is more desirable to keep partially transferred files. Using the --partial option tells rsync to keep the partial file which should make a subsequent transfer of the rest of the file much faster.
-P # The -P option is equivalent to --partial --progress. Its purpose is to make it much easier to specify these two options for a long transfer that may be interrupted.
5 RoshP 2016-01-17
ソースディレクトリとターゲットディレクトリが同じ名前であれば、たとえターゲットディレクトリが存在していたとしても、単に入力するだけでOKです
cp -R /etc/skel /home/
これは /etc/skel ディレクトリを /home/ にコピーします
最終的には、ディレクトリをコピーして一行で名前を変更することができます
cp -R /etc/skel /home/ && mv /home/skel /home/user
4 Gabriel Hautclocq 2013-05-16
同じ問題の解決策を探してググってここに来たのですが、FINDで簡単にできることに気がつきました。シェルやインストールされていないかもしれない特殊なユーティリティに依存しないという利点があります
find /etc/skel/ -mindepth 1 -exec cp -r {} /home/username/ \;
トレイリングスラッシュでトリックを試してみましたが、私にはうまくいきませんでした
3 Linus 2015-07-24
コマンドラインのトリックがあることに注意してください (少なくとも sh, bash, ksh で動作します)。from ディレクトリの後にスラッシュを付けてください。これは from ディレクトリの内容を to ディレクトリに流し込みます (皮肉なことに、私は rsync を使っているときにこのトリックを初めて知りました)
Example:
/tmp$ mkdir test_dir1
/tmp$ cd test_dir1/
/tmp/test_dir1$ touch aa
/tmp/test_dir1$ touch .bb
/tmp/test_dir1$ cd ..
/tmp$ mkdir test_dir2
/tmp$ cp -r test_dir1/* test_dir2
/tmp$ ls -1a test_dir2
.
..
aa
/tmp$ cp -r test_dir1/ test_dir2
/tmp$ ls -1a test_dir2
.
..
.bb
aa
2 Dustin Oprea 2015-05-12
この問題に対する私の解決策は、すべてのファイル(.
ファイルを含む)をパーミッションを保持したままターゲットディレクトリにコピーしなければならないときに、次のようになります。(既に存在する場合は上書き)
yes | cp -rvp /source/directory /destination/directory/
yes
は保存先ファイルを自動的に上書きするため、r
は再帰的、v
は冗長、p
はパーミッションを保持するためです
ソースパスが /
で終わっていないことに注意してください (つまり、すべてのファイル/ディレクトリと .ファイルがコピーされていることになります)
コピー元フォルダの内容を全体としてコピー先に配置しているので、コピー先ディレクトリは/
で終わります
2 Rajneesh Gadge 2018-01-30
cp は常に隠しファイルをコピーするわけではないことを見てきましたが、もし linux/unix のすべての方言で動作するようなコマンドが必要ならば、これを使ってみてください
cd /etc/skel
find | cpio -pdumv /home/user
1 Mikael Nyborg 2019-02-13
少なくともK3b 2.0.3の時点では、ディレクトリがプロジェクトに追加されたときにポップアップする質問ボックスがあります。いいね!
-2 Fred James 2016-12-14