mvにcpのような--parentsオプションがありますか?

mvにcpのような--parentsオプションがありますか?

cp--parentsファイルのディレクトリ構造を別のディレクトリにコピーするのに役立つ機能があります。

$ cp -v --parents source/directory/from target/
‘source/directory/from’ -> ‘target/source/directory/from’

どうすれば同じことができますか?移動する文書がありますか?

答え1

直接的ではありませんが、少なくともmvGNUによるとそうではありません。マニュアルページ。考えられる解決策は、次の機能を追加することです。

pmv(){
    source=$1
    target=${2%/}
    mkdir -p -- "$target/$(dirname -- "$source")" &&
      mv -- "$source" "$target/$(dirname -- "$source")/"
}

シェルの構成ファイルに関数を追加し(~/.bashrcbashを使用している場合)、次のように実行します。

pmv source/directory/from target/

答え2

同様の方法でファイルを移動する方法はありますか?

まったくmvシステムコールを使用する非常に単純なユーティリティですrename原子FS操作)可能な場合 - ソース/ターゲットが同じブロックデバイスにある場合、さもなければ後ろに倒れる行動にcprenamesrc / dstがLinuxで許可されている他のマウントポイントにマウントされているのと同じデバイスであっても、実際には失敗します。

したがって、ファイルを移動する必要がある場合は、次のようになります。

cp -v --parents source/directory/from target/

次のことを考えてみましょう。

mv source target/

しかし、動くことを覚えてください。すべてのコンテンツすべての親ディレクトリはおそらく内部にあるので、後で処理する必要があります。つまり、cp --parents提供されたものと同じ結果を得るには、追加のファイルをすべてリンク解除する必要があります。

近いうちに、あなたがやっていることがcp/rmメソッドを使って簡単にできることに気づくでしょう。愛する人の使用を許可しながら、すばやくcp使用して-l実行できます--parents。だからこそ、それほど素敵なことはmvないでしょう。cp--parents

関連情報