検討してください:
ls -al ../public-back
drwxrwxr-x 4 Apache Apache 4096 Apr 19 03:32 templates
ls -al ../public-back/templates
drwxrwxr-x 2 Apache Apache 4096 Apr 19 03:33 content
drwxrwxr-x 2 Apache Apache 20480 Apr 20 06:14 images
drwxrwxr-x 2 Apache Apache 4096 Apr 19 03:35 video
ls -al /public
drwxrwxr-x 4 Apache Apache 4096 Apr 20 09:49 templates
ls -al /public/templates
drwxrwxr-x 2 Apache Apache 4096 Apr 20 09:50 content
drwxrwxr-x 2 Apache Apache 4096 Apr 20 09:50 images
drwxrwxr-x 2 Apache Apache 4096 Apr 20 09:50 video
パーミッション付きで/public-back/templates
の内容を/public/templates
に再帰的に移動するにはどうすればよいですか?
誤解しない限り、これでうまくいきます。
__コード__
また、巨大なファイルのリストがない限り、mv /public-back/templates/* /public/templates
を追加すると上書きされる前に-i
が要求されます。これにより、*
のようなワイルドカードを使用する際の安全性が高まります。
Cpのmanページには、次のように記載されています。
-p same as --preserve=mode,ownership,timestamps
-r same as --recursive=copy directories recursively
してみてください。
cp -rp /public-back/templates/* /public/templates/
私のサムドライブから私のOSMCシステムにアイテムを移動するとき、私は以下が非常に役に立つとわかりました:
find /media/Pi\ Hard\ 16GB/ -name '*' -exec mv -v {} /media/External\ HDD/Videos/ \;
それがどのように動作するかについての説明は以下にあります。
ところで、ソースまたはデスティネーションディレクトリ名のスペースの前にバックスラッシュを追加することを忘れないでください(上記参照)。
find finds all files and folders in the destination path.
/media/Pi Hard 16GB/ is the path searched. Escape special char such as spaces.
-name '*' filters on names. If you do not escape or quote this then
the Shell will expand it before find sees it.
-exec Executes a command, in our case mv
-v Verbose, so you can see what's happening (optional)
{} is replaced by the name of the found object.
事実上、あなたはすべてのファイルとすべてのフォルダを見つけてそれらを一つずつ移動させています(あるいはディレクトリが最初に見つけられた場合、あなたはそのディレクトリとその中のコンテンツを移動しています)。これは各動きのための新しいプロセスを始め、非常に非能率的です。通常のコマンドが失敗した場合にのみこれを使用してください。
mvはこれをしていないようです。しかし、あなたはこの小さなトリックを使うことができます、魅力のように働きます:
tar cf - . |(cd /targetdir; tar xvf -)
そして権限とすべてを保持します。
注:上記のどれも私のために働きませんでした、それがこの回避策である理由です。
cp -a --link ../public-back/* /public/. && rm -rf ../public-back
そのため、インストール先ディレクトリにハードリンクを作成し、ソースディレクトリを削除します。 'mv'は単にあなたのケースではうまくいきません、そして一般的にはsource dirとdestが共通のサブツリーを持たないときだけうまくいきます。
質問の中の「移動」という言葉は、ソースディレクトリが操作後に削除されることを意味していると思います。