ターミナル上のファイル操作について

Kazunori Kamiya
Jul 28, 2017 · 8 min read

今回は、ターミナル上でのファイル操作に関する基本的なことを書いていきます。

ここでは、以下の4つのコマンドをご紹介します。
・cp — copy files and directories
・mv — move or rename files and directories
・rm — remove files and directories
・mkdir — create directories

これらはLinux上で最も頻繁に使われるコマンドであり、ファイルとディレクトリ操作に関する基本的なコマンドでもあります。

これらのコマンドで実行できるいくつかの作業は、グラフィカルファイルマネージャーでより簡単に実行できます。
ファイルマネージャーにより、ファイルを他のディレクトリに移動させたり、コピーや消去など色々な作業ができます。
では、なぜこれらの古いコマンドラインプログラムを使うのでしょうか?

答えは、その権力と柔軟性にあります。
グラフィカルファイルマネージャーを使う方が単純なファイル操作を実施するには楽であるものの、複雑なタスクになるとコマンドラインプログラムの方が向いています。
例えば、全てのHTMLファイルをあるディレクトリから他のディレクトリにコピーしたいとき、ただしコピー先に存在しないファイルのみ、あるいはコピー先のディレクトリより新しいバージョンだけ移動したい場合は、コマンドラインプログラムを使うと簡単にできます。
それには、以下のようなコマンドを打てばいいです。

・ワイルドカードについて

コマンドを使い始める前に、そのコマンドをより便利にするものを紹介しておきましょう。
シェルが使うファイル名が多すぎる場合、ある特殊文字を用いることでファイル名のグループを素早く指定できます。
これらがワイルドカードと呼ばれるもので、文字の規則性に基づいてファイル名を選んでくれます。
下に、ワイルドカードの一覧をその意味を書いておきましょう。

・*— 全てにマッチする文字列
・? —1文字分にマッチする文字列
・[characters] — 指定された文字列にマッチする全ての文字列
・[!characters] — 指定された文字列にマッチしない全ての文字列

補足:POSIX文字クラスについて
ある文字の一式はPOSIX文字クラスと表現され、以下のように分類されます。
[:alnum:] — 英数字
[:alpha:] — アルファベット
[:digit:] — 数字
[:upper:] — 大文字
[:lower:] — 小文字

ワイルドカードを使うと、ファイル名に関してとても洗練された選択基準を組み立てることが可能になります。
ワイルドカードの使い方の例を、下に記しておきましょう。

・*— 全てのファイル名
・g* — “g”で始まる全てのファイル名
・b*.txt — “b”で始まり、”.txt”で終わる全てのファイル名
・Data??? — “Data”で始まり、その後に3文字が続く全てのファイル名
・[abc]* — “a” ”b” “c”のいずれかで始まり、その後に文字が続く全てのファイル名
・[[:upper:]]* — 大文字で始まる全てのファイル名
・BACKUP.[[:digit:]][[:digit:]] — “BACKUP.”で始まり、その後に2つの数字が続く全てのファイル名
・*[![:lower:]] — 小文字を含まない全てのファイル名

cpコマンド

cpコマンドは、ファイルやディレクトリをコピーするためのコマンドです。
1つのファイルをコピーする場合、以下のように書きます。

同時に多数のファイルやディレクトリを、異なるディレクトリにコピーすることもできます。

ここで”…”は、1回あるいはそれ以上そのアイテムが繰り返せることを示しています。
cpコマンドの便利な用例と、オプションを紹介しておきます。

・cp file1 file2 — file1をfile2にコピーし、file2が存在しなければそれを作成する。注意すべきは、file2が勝手にfile1の内容で上書きされること。
・cp -i file1 file2 — “i”が入ることにより、file2が存在する場合は上書きしてもいいか確認が入ります。
・cp file1 dir1 — file1の内容を、dir1というディレクトリ内にコピーする
・cp -R dir1 dir2dir1というディレクトリ内のコンテンツをコピーし、dir2というディレクトリがなければそれを作成する。言い換えれば、dir2というディレクトリの中にdir1というディレクトリが作成されるということである。

mvコマンド

mvコマンドは、ファイルやディレクトリを移動もしくはリネームするためのコマンドです。ファイルをリネームするには、以下のように入力します。

ファイルやディレクトリを異なるディレクトリに移動するには、以下のように入力します。

mvコマンドの例とオプションを、以下に記しておきます。

・mv file1 file2 — file2が存在しない場合、file1がfile2にリネームされます。file2が存在する場合、内容がfile1のもので勝手に上書きされます。
・mv file1 file2 — “i”が入ることにより、file2が存在する場合は上書きしてもいいか確認が入ります。
・mv file1 file2 file3 dir1—file1とfile2とfile3を、dir1というディレクトリに移動します。dir1が存在しない場合は、エラーになります。
・mv dir1 dir2 —dir2が存在しない場合は、dir1がdir2にリネームされます。dir2が存在する場合、dir1がdir2の中に移動します。

rmコマンド

rmコマンドは、ファイルやディレクトリを削除するためのものです。

ディレクトリを削除する場合は、以下のように入力します。

rmコマンドの使用例と、オプションを下に書いておきます。

・rm file1 file2 — file1とfile2を消去します。
・rm -i file1 file2 — “i”が入ることで、file1とfile2をそれぞれ消去する前に確認が入ります。
・rm -r dir1 dir2— dir1とdir2というディレクトリが、その中にある全てのコンテンツと共に削除されます。

注意:rmコマンドで消去したファイルは、元に戻せません。そのためrmを使う際、特にワイルドカードを用いる場合は注意してください。

mkdirコマンド

mkdirコマンドは、ディレクトリを作成するためのコマンドです。
実際に使うには、以下のように入力すればいいです。

ワイルドカードを用いたコマンドの使用について

ここで紹介しているコマンドは、多くのファイルやディレクトリを許容しており、それらを指定するのにワイルドカードを用いることができます。
いくつか、例を紹介しておきましょう。

・cp *.txt text_files — カレントディレクトリ内のファイルの中で、”.txt”で終わるものをtext_fileというディレクトリにコピーします。
・mv my_dir ../*.bak my_new_dir — my_dirというサブディレクトリと、親ディレクトリ内にある”.bak”で終わる全てのファイルを、my_new_dirというディレクトリにコピーします。
・rm *~ — カレントディレクトリ内の、”~”で終わる全てのファイルを削除します。いくつかのアプリケーションでは、命名の仕組みを使ってバックアップを作成しているものの、このコマンドを使えばそれらも削除できます。

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade