Linuxにおいて、ファイルを移動させたいときに使うのがmv(MoVe)コマンドです。mvコマンドではファイルの移動だけでなく、名前の変更も行うことができます。

書式

mv 移動元ファイル 移動先ファイル

オプション

-i

処理を完了する前に確認を行わせます。ファイルを上書きする際などに-iオプションをつけておくことによって、誤って上書きコピーしてしまうリスクを減らすことができます。

-f

強制的に処理を実行させることができます。mvコマンドを実行する際、確認の問い合わせが行われることがありますが、fオプションを付与すると確認を無視し、強制的に処理を実行させることができます。

実行例

$ mv src-file dst-file

ファイルを別のディレクトリに移動

上記の実行例において、src-fileがファイル名で、dst-fileが既に存在するディレクトリの場合、src-fileファイルがdst-fileディレクトリの下に移動します。

ディレクトリを別のディレクトリに移動

src-fileがディレクトリ名で、dst-fileが既に存在するディレクトリの場合、src-fileディレクトリがdst-fileディレクトリの下に移動します。

ファイル名の変更

src-fileがファイル名で、dst-fileが存在しないファイル名の場合、src-fileファイルの名前をdst-fileに変更します。

ディレクトリ名の変更

src-fileがディレクトリ名で、dst-fileが存在しないディレクトリの場合、src-fileディレクトリの名前をdst-fileに変更します。

mvコマンドの実行

それでは実際にmvコマンドを使用していきます。

まずはファイル名の変更を行います。

$ ls -l
合計 44
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:18 2012 hosts
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:24 2012 hosts.newname
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:24 2012 hosts.sametime
(略)
$ mv hosts.newname hosts.renew
$ ls -l
合計 44
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:18 2012 hosts
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:24 2012 hosts.renew
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:24 2012 hosts.sametime
(略)

上記ではhosts.newnameの名前がhosts.renewに変更されました。

次にファイルを別のディレクトリに移動してみます。

$ mkdir test
$ mv hosts.renew test/
$ ls
hosts hosts.sametime test
(host.renew が移動されていることを確認)
$ ls test/
hosts.renew

上記ではmkdirコマンドによってtestディレクトリを作成し、hosts.renewファイルをtestディレクトリの下に移動しています。

まとめ

いかがでしたか?今回はファイルの移動やファイル名の変更に使えるmvコマンドの使い方を解説しました。

既にディレクトリが存在する場合はそのディレクトリの下に移動、存在しない場合はファイル名・ディレクトリ名の変更を行うことができます。

Linux上でファイルをコピーするにはcpコマンド(CoPy)を使います。cpコマンドではファイルを複製し、新しくできた複製ファイルのファイル名を指定することができます。

書式

cp [オプション] コピー元 コピー先

オプション

-i

処理を完了する前に確認を行わせます。ファイルを上書きコピーする際などに-iオプションをつけておくことによって、誤って上書きコピーしてしまうリスクを減らすことができます。

-r

ディレクトリーのコピーを行わせます。cpコマンドは通常はファイルをコピーするコマンドですが、-rオプションを付与することによって、ディレクトリ内に存在するすべてのファイル・ディレクトリのコピーを行うことができるようになります。

-p

元ファイルの情報を保存します。ファイルには通常、最終更新日時や所有者などのメタ情報が含まれていますが、通常cpコマンドでコピーするとそれらの情報はすべて新しい情報となってコピーされます。-pオプションを付与することによって、コピー元のこれらの情報を保持したままコピーすることができます。

実行例

$ cp src-file dst-file

cpコマンド一つで以下の三つの挙動が行えます。

ファイルを別名のファイルとしてコピー

上記の実行例において、src-fileがコピー元のファイル名で、dst-fileが存在しないファイル名である場合、src-fileのコピーとして新たにdst-fileが作成されます。

ファイルをディレクトリにコピー

src-fileがコピー元のファイル名で、dst-fileがディレクトリ名の場合、dst-fileディレクトリの中にsrc-fileのコピーが新たに作成されます。

ファイルを新しいファイルで上書き

src-fileがコピー元のファイル名で、dst-fileがすでに存在するファイル名の場合、既に存在していたdst-fileの内容がsrc-fileの内容で上書きされます。

cpコマンドの実行

それでは実際にcpコマンドを実行した場合の挙動を確認してみましょう。

オプションなしでcpコマンドを実行

$ cd ~
$ cp /etc/hosts ~
$ ls
hosts
(略)

上記ではetcディレクトリ内に存在するhostsファイルをホームディレクトリ(~)にコピーしています。

$ cd ~
$ cp /etc/hosts ~/hosts.newname
$ ls
hosts hosts.newname
(略)

上記ではetcディレクトリ内に存在するhostsファイルをホームディレクトリにhosts.newnameファイルとしてコピーしています。

-pオプションをつけてcpコマンドを実行

$ cp -p hosts.newname hosts.sametime
$ ls -l
合計 44
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:18 2012 hosts
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:24 2012 hosts.newname
-rw-r--r--. 1 tooyama tooyama 158 5 月 31 11:24 2012 hosts.sametime
(略)

新しくコピーしたhosts.sametimeファイルはコピー元のhosts.newnameファイルと同じ更新時間になっているのがわかります。-pオプションをつけたことによって所有者や更新時間などの情報を保持したままコピーすることができました。

-rオプションをつけてcpコマンドを実行

$ mkdir olddir newdir
(olddir と newdir を作成)
$ cp -r olddir/ newdir/
$ ls newdir/
olddir

mkdir(MaKe DIRectory)はディレクトリを作成するためのコマンドです。一行目でolddirとnewdirというディレクトリを作成し、olddirディレクトリ(中身も含む)をnewdirディレクトリの中にコピーしました。ディレクトリのコピーを行っているので-rオプションをつける必要があります。

まとめ

いかがでしたか?今回はファイルをコピーするためのcpコマンドについて解説しました。

-rオプションをつけることによってファイルだけでなく、ディレクトリのコピーを行うこともできます。

コンピュータ上には様々なデータがあり、それらはファイルと呼ばれます。ワードなどで作成したファイルは文書ファイル、写真などは画像ファイルと呼ばれ、さまざまな種類のファイルがあります。

ファイルが増えていくと、それらを何らかの形で分類しないと必要なファイルを見つけるのが大変になってしまうため、ファイルをまとめる場所を作成する必要が出てきます。このファイルをまとめる場所というのがディレクトリにあたります。

ディレクトリの中には複数のファイルをまとめることができます。またディレクトリの中にさらにディレクトリを作成し、その中にファイルや別のディレクトリを保存することもできます。

ファイルやディレクトリを参照するlsコマンド

Linuxでファイル操作を行う際に最初に必要になるのがlsコマンドです。

lsコマンドはListの略で、ファイルやディレクトリの一覧を表示することができます。またlsコマンドにはファイル名やディレクトリ名を指定することもでき、ディレクトリ名を指定するとそのディレクトリ内にあるファイルやディレクトリ名の一覧を取得することができます。

またファイル名やディレクトリ名を指定する際には*と?をワイルドカードとして使うこともできます。

書式

ls [オプション] [ファイル]

オプション

-a(All)

.から始まる隠しファイルも含めてすべて出力します。

-l(Long)

長形式で出力します。

-t(Time)

最終更新時間順に並び替えて出力します。

-r(Reverse)

逆順に並び替えて出力します。

実践 lsコマンド

それではここまで学習した内容を踏まえて、lsコマンドを使って実際にファイル操作してみましょう。

何もつけずにlsコマンドを実行した場合

何も指定せずにlsコマンドを実行すると、現在いるディレクトリ(カレントディレクトリ)内にあるファイルやディレクトリ名が表示されます。

$ ls
ダウンロード デスクトップ ビデオ 画像
テンプレート ドキュメント 音楽 公開

lsコマンドに場所を指定した場合

lsコマンドのあとにディレクトリ名を指定すると、指定したディレクトリ内のファイルやディレクトリ一覧を表示します。

$ ls /usr/
bin etc games include lib libexec local sbin share src tmp

usrという名前のディレクトリ内にあるファイルやディレクトリ一覧を取得できました。

ワイルドカードを使った絞り込み

/etcディレクトリ内が以下のようになっているとします。

$ ls /etc/
ConsoleKit mailcap DIR_COLORS makedev.d
(略)

etcディレクトリにはたくさんのファイルが存在しており、目的のファイルを探すのが大変そうです。そこで役立つのがワイルドカードを使った絞り込みです。

lsコマンドによって取得された結果から絞り込む場合、ワイルドカードを使うことができます。

例えばファイル名末尾に.confがつくファイルを絞り込みたい場合、以下のようにします。

$ ls /etc/ *.conf
nsswitch.conf asound.conf
(略)

ワイルドカードである*は任意の文字列を表しています。つまり*.confは何らかの文字列のあとに.confがつくファイルを意味しています。何文字でも良いため、末尾が.confで終わるファイルすべてを出力します。

文字数がわかっている場合は?を使って指定します。何らかの5文字のあとに.confがつくファイルを出力したい場合は以下のようにします。

$ ls /etc/ ?????.conf
asound.conf
(略)

hosts.のあとに何らかの4文字が続き、wで終わるファイルを絞り込む場合は以下のようにします。

$ ls /etc/ hosts.????w
hosts.allow

-lオプションで長形式の情報を取得する

lsコマンドにlオプションをつけると、長形式の情報を取得できます。

$ ls -l /home/linuxtext/
合計 32
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 ダウンロード
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 テンプレート
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 26 18:33 2012 デスクトップ
drwxr-xr-x. 8 linuxtext linuxtext 4096 7 月 27 14:07 2012 ドキュメント
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 ビデオ
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 音楽
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 画像
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 公開
(略)

lオプションを付与することで、最終更新時間やファイルの読み書き権限を含めた詳細な情報を取得することができました。

aオプションで隠しファイルも含めて取得する

前述したとおり、aオプションでは.から始まる隠しファイルも含めて取得することができます。複数のオプションを合わせて使うことができるので、上のlオプションと合わせて-laオプションを付与して試してみます。

$ ls -la /home/linuxtext
合計 196
drwx------. 31 linuxtext linuxtext 4096 7 月 27 14:08 2012 .
drwxr-xr-x. 4 root root 4096 7 月 9 10:43 2012 ..
-rw-------. 1 linuxtext linuxtext 4960 7 月 27 08:56 2012 .ICEauthority
drwxrwxr-x. 2 linuxtext linuxtext 4096 7 月 18 09:52 2012 .abrt
-rw-------. 1 linuxtext linuxtext 3148 7 月 26 19:30 2012 .bash_history
-rw-r--r--. 1 linuxtext 500 18 12 月 2 23:40 2011 .bash_logout
-rw-r--r--. 1 linuxtext 500 176 12 月 2 23:40 2011 .bash_profile
-rw-r--r--. 1 linuxtext 500 124 12 月 2 23:40 2011 .bashrc
(略)
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 ダウンロード
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 テンプレート
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 26 18:33 2012 デスクトップ
drwxr-xr-x. 8 linuxtext linuxtext 4096 7 月 27 14:07 2012 ドキュメント
(略)

先ほどは表示されなかった.から始まるファイルまで取得することができました。.から始まる隠しファイルはシステムの設定などが書かれたファイルに使われることが多いです。

また今回はlオプションとaオプションを合わせて-laオプションとして使いましたが、複数のオプションを同時に使いたい場合、順序は関係ないので、個別に指定することもできるので、

上記いずれも同じように動作します。

tオプションを使って更新時間順に並び替え

lsコマンドにtオプションを付与することで、更新時間順に並び替えることができます。

$ ls -lt /home/linuxtext
合計 32
drwxr-xr-x. 8 linuxtext linuxtext 4096 7 月 27 14:07 2012 ドキュメント
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 26 18:33 2012 デスクトップ
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 ダウンロード
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 テンプレート
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 ビデオ
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 音楽
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 画像
drwxr-xr-x. 2 linuxtext linuxtext 4096 7 月 6 10:05 2012 公開
(略)

ファイルが更新日時の新しい順に並んでいるのがわかりますね。

まとめ

いかがでしたか?今回はファイル操作の基本となるlsコマンドの使い方について解説しました。

Linuxはコマンドから操作することが多く、WindowsやMac OSのようにGUIがない場合も少なくない(むしろ多い)ので、コマンドのみでどこになにがあるのかを把握するためにもlsコマンドは必須です。