Linuxでファイルを移動するのは比較的簡単に見えるかもしれませんが、ほとんどの人が理解しているよりも多 この記事では、初心者にGUIとコマンドラインでファイルを移動する方法を教えますが、実際に内部で何が起こっているのかについても説明し、多くの

何を動かしていますか?

ファイルを移動する前に、ファイルシステムオブジェクトを移動するときに実際に何が起こるかを詳しく見てみる価値があります。, ファイルが作成されると、ファイルはinodeに割り当てられます。inodeは、データストレージに使用されるファイルシステム内の固定小数点です。 Lsコマンドを使用して、どのinodeがファイルにマップされるかを確認できます。

$ ls --inode example.txt
7344977 example.txt

ファイルを移動すると、実際にはデータをあるinodeから別のinodeに移動するのではなく、ファイルオブジェクトに新しい名前またはファイルパスを割り当てるだけです。 実際には、ファイルを移動してもファイルを変更したり再作成したりしないため、ファイルは移動時にそのアクセス許可を保持します。

ファイルとディレクトリinodeは継承を意味せず、ファイルシステム自体によって決定されます。, Inodeの割り当ては、ファイルが作成されたときに基づいて順次であり、コンピュータの整理方法とは完全に無関係です。 ファイル”内の”ディレクトリにて低inode数より、親ディレクトリ、またはより高い。 たとえば、

$ mkdir foo
$ mv example.txt foo
$ ls --inode
7476865 foo
$ ls --inode foo
7344977 example.txt

あるハードドライブから別のハードドライブにファイルを移動すると、inodeが変更される可能性が非常に高くなります。 この新しいデータを記述して、新しいファイルシステム. このため、Linuxでは、ファイルの移動と名前の変更は文字通り同じアクションです。, かきファイルを別のディレクトリ又は同一ディレクトリに新しい名前の両方の行為を行ったが同じ基本プログラム。

この記事では、あるディレクトリから別のディレクトリへのファイルの移動に焦点

マウスで移動する

GUIは、複雑なバイナリデータのコレクションの上に、ほとんどの人にとってフレンドリーで馴染みのある抽象化レイヤーです。 また、Linux上でファイルを移動する最初の、そして最も直感的な方法でもあります。 あなたが一般的な意味で、デスクトップの経験に慣れている場合は、おそらくすでにあなたのハードドライブの周りにファイルを移動する方法を知, たとえば、GNOMEデスクトップでは、ファイルをあるウィンドウから別のウィンドウにドラッグアンドドロップするときのデフォルトのアクションは、ファイルをコピーするのではなくファイルを移動することです。 Shiftキーを押しながらファイルをドラッグすると、強制的に移動アクションが実行されます。

コマンドラインでの移動

Linux、BSD、Illumos、Solaris、およびMacOSでファイルを移動するためのシェルコマンドはmvです。, 予測可能な構文を持つ単純なコマンドmv<source><destination>ソースファイルを指定された宛先に移動します。 前述したように、mvはPOSIXユーザーにとって非常に一般的なコマンドであり、その追加の修飾子の多くは一般的に不明であるため、この記事では、新しいもの,しかし、すべてのmvコマンドが同じ人によって書かれたわけではないので、オペレーティングシステムによってはGNU mv、BSD mv、またはSun mvがあるかもしれま コマンドオプションは実装によって異なります(BSD mvには長いオプションはまったくありません)ので、mv manページを参照してサポートされているものを,

ファイルの移動

mvでファイルをあるフォルダから別のフォルダに移動するには、構文mv<ソース><宛先>を覚えておいてください。 たとえば、ファイルの例を移動します。txtをドキュメントディレクトリに入れます。

$ touch example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt

ファイルをフォルダアイコンにドラッグアンドドロップして移動するときと同じように、このコマンドはドキュメントをexampleに置き換えません。テキスト 代わりに、mvはDocumentsがフォルダであることを検出し、例を配置します。それにtxtファイル。,

ファイルを移動するときにファイルの名前を変更することもできます。

$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt

これは重要です。

$ touch example.txt$ mv example.txt foo2.txt$ lsfoo2.txt

ディレクトリの移動

mvコマンドは、cpのようにファイルをディレクトリと区別しません。, 同じ構文でディレクトリまたはファイルを移動できます。

$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents

ファイルを安全に移動する

同じ名前のファイルがすでに存在するディレクトリにファイルをコピーする場合、mvコマンドはデフォルトで移動先ファイルを移動先ファイルに置き換えます。 この動作はclobberingと呼ばれ、時にはそれがまさにあなたが意図しているものです。 他の回は、そうではありません。

いくつかのディストリビューションのエイリアス(または独自のものを書くことができます)mvにmv–interactive、確認を求められます。 いくつかはありません。, いずれにしても、–interactiveまたは-iオプションを使用して、同じ名前の二つのファイルが競合している場合にmvが確認を要求するようにすることができます。

$ mv --interactive example.txt ~/Documents
mv: overwrite '~/Documents/example.txt'?

手動で介入したくない場合は、代わりに–no-clobberまたは-nを使用してください。 このフラグは、競合が発生した場合に移動アクションを黙って拒否します。 この例では、exampleという名前のファイルです。,txtはすでに~/Documentsに存在するので、指示どおりに現在のディレクトリから移動されません。

$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt

バックアップで移動

GNU mvを使用している場合、安全な移動の別の手段を提供するバックアップオプションがあります。 競合するコピー先ファイルのバックアップを作成するには、-bオプションを使用します。

$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt example.txt~

このフラグは、mvが移動アクションを完了することを保証しますが、コピー先の場所にある既存のファイルも保護します。,

もう一つのGNUバックアップオプションは–backupで、バックアップファイルの名前を定義する引数を取ります。

  • existing:番号の付いたバックアップが宛先に既に存在する場合、番号の付いたバックアップが作成されます。 それ以外の場合は、単純な方式が使用されます。
  • なし:–backupが設定されていてもバックアップを作成しません。 このオプションは、backupオプションを設定するmv別名を上書きする場合に便利です。
  • numbered:コピー先のファイルに番号を付けて追加します。,これは、lsの–ignore-backupsオプションを使用すると、毎日のビューから非表示にすることができます。

例:

デフォルトのバックアップスキームは、環境変数VERSION_CONTROLで設定できます。 あなたの中に環境変数を設定することができます~/。bashrcファイルまたはコマンドの前に動的にオーバーライドすることができます。

–backupオプションは、–interactiveまたは-iオプションを尊重するため、バックアップを作成する前に、宛先ファイルを上書きするように求められます。

-iを–forceまたは-fオプションで上書きすることができます。,

BSD mvでは–backupオプションは使用できません。

一度に多くのファイルを移動する

複数のファイルを移動する場合、mvは宛先として名前の最後のディレクトリを扱います。

$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo bar baz

最終項目がディレクトリでない場合、mvはエラーを返します。

$ mv foo bar baz
mv: target 'baz' is not a directory

GNU mvの構文はかなり柔軟です。, 宛先を最後の引数としてmvコマンドに指定できない場合は、–target-directoryまたは-tオプションを使用します。

$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo bar baz

これは、findコマンド、xargs、GNU Parallelなどの他のコマンドの出力からmvコマンドを構築するときに特に便利です。

mtimeに基づく移動

GNU mvでは、移動するファイルが置き換える宛先ファイルよりも新しいかどうかに基づいて移動アクションを定義できます。, このオプションは–updateまたは-uオプションで可能であり、BSDでは使用できませんmv:

この結果は、ファイルの変更時刻にのみ基づくものであり、二つのファイルの差分に基づくものではないので、注意して使用してください。 単なるタッチコマンドでmvを欺くのは簡単です:

明らかに、これは利用可能な最もインテリジェントな更新機能ではありませんが、最近のデータの上書きに対する基本的な保護を提供します。

Moving

mvコマンドだけでなく、データを移動する方法もたくさんありますが、ジョブのデフォルトプログラムとして、mvは優れた普遍的なオプション, 利用可能なオプションがわかったので、これまで以上にスマートにmvを使用できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です