ディレクトリを繰り返しながら、古いファイルを別の場所に移動しています。例えば。エラーなしで移動/a/b/c/d.txt
したい/x/a/b/c/d.txt
パスにあるファイルです。単一のコマンドでこれは可能ですか?mv
うまくいかない場合cp
との組み合わせはrm
機能しますか?
- 一度に1つのファイルを移動するだけです。
- ターゲットツリーがすでに存在する場合は、エラーは発生しないでください。
- ターゲットツリーが存在しない場合は作成されます。
この投稿要件が満たされていないようです。複数行のコードを使用してこれを行うこともできます。それでは、事前定義された単一行オプションを持つことは可能ですか? (プログラミング言語と統合したい)
答え1
標準コマンドのみを使用する必要がある場合は、必要なコマンドではないかもしれませんが、rsync
役に立ちます。
$ mkdir a a/b a/b/c; echo foo >a/b/c/d.txt; tree a
a
└── b
└── c
└── d.txt
2 directories, 1 file
$ rsync --relative --remove-source-files a/b/c/d.txt x/
$ tree a x
a
└── b
└── c
x
└── a
└── b
└── c
└── d.txt
5 directories, 1 file
~から手動:
--relative, -R
相対パスを使用します。これは、ファイル名の最後の部分だけでなく、コマンドラインで指定されたフルパス名がサーバーに送信されることを意味します。 ...
そして
--remove-source-files
これは送信の一部であり、受信側から正常にコピーされたファイル(つまりディレクトリではなく)を送信側から削除するようにrsyncに指示します。