Linux環境で、ファイルやディレクトリを操作するときに必要となるコマンドの具体的な使用例を分かりやすく解説します。
- ls - ファイルやディレクトリの内容を表示する
- cp - ファイルやディレクトリをコピーする
- mv - ファイルやディレクトリを移動する
- rm - ファイルやディレクトリを削除する
- mkdir - ディレクトリを作成する
- csplit, split - ファイルを分割する
- cat - ファイルを結合する
- touch - ファイルのタイムスタンプを変更する
目次
ファイルやディレクトリの内容を表示
ファイルやディレクトリの内容を表示するときは、lsコマンドを利用します。
使用例
ディレクトリdirectoryAの内容を表示するには、以下のように実行します。(ディレクトリを指定しないと、カレントディレクトリの内容が表示されます。)
# ls directoryA
名前が「a」から始まるファイルやディレクトリだけを表示するには、、以下のように実行します。
# ls a*
ディレクトリdirectoryA内のファイルやディレクトリ詳細情報(アクセス権や所有者、ファイルサイズなどの情報)を表示するには、以下のように実行します。
# ls -l directoryA
ディレクトリdirectoryA内のドットファイル(隠しファイル)を含めて表示するには、以下のように実行します。
# ls -a directoryA
ディレクトリdirectoryA内のサブディレクトリの内容を含めて表示するには、以下のように実行します。
# ls -R directoryA
ファイルやディレクトリのコピー
ファイルやディレクトリをコピーするときは、cpコマンドやinstallコマンドを利用します。
使用例
cpコマンド
sampleA.txtを、sampleB.txtにコピーするには、以下のように実行します。
# cp sampleA.txt sampleB.txt
sampleA.txtを、ディレクトリ/home/hoge内にコピーするには、以下のように実行します。
# cp sampleA.txt /home/hoge
sampleA.txtとsampleB.txtの2ファイルを、ディレクトリ/home/hoge内にコピーするには、以下のように実行します。
# cp sampleA.txt sampleB.txt /home/hoge
「file」から始まるすべてのファイルを、/home/hogeにコピーするには、以下のように実行します。
# cp file* /home/hoge
ディレクトリdirectoryAを、ディレクトリ内の内容を含めてディレクトリdirectoryBにコピーするには、以下のように実行します。
# cp -r /home/hoge/directoryA /home/hoge/directoryB
installコマンド
ファイルをコピーするのと同時に、所有者やアクセス権も変更したいときはistallコマンドが便利です。
たとえば「test.txt」というファイルの所有者をroot、グループをroot、パーミッションを755として/usr/local/binディレクトリにコピーしたいときは、以下のようにコマンドを実行します。
# install -o root -g root -m 755 test.txt /usr/local/bin/test.txt
ファイルやディレクトリの移動
ファイルやディレクトリを指定した場所に移動したいときは、mvコマンドを利用します。
使用例
sample.txtを、ユーザーのホームディレクトリに移動するには、以下のように実行します。
# mv sample.txt ~
また、mvコマンドはファイル名を変更するときにも利用できます。
たとえば、before.txtのファイル名を、after.txtに変更するには、以下のように実行します。
# mv before.txt after.txt
ファイルやディレクトリの削除
ファイルやディレクトリを削除するときは、rmコマンドを利用します。
使用例
カレントディレクトリ内で拡張子がtxtのファイルを削除するには、以下のように実行します。
# rm *.txt
sampleディレクトリを、ディレクトリ内のファイルごと削除するには、以下のように実行します。
# rm -r /tmp/sample
file1.txtとfile2.txtの2つのファイルを削除するには、以下のように実行します。
# rm file1.txt file2.txt
ディレクトリの作成
ディレクトリを作成するときは、mkdirコマンドやinstallコマンドを利用します。
使用例
mkdirコマンド
アクセス権が755のディレクトリ「mydirectory」を作成するには、以下のように実行します。
# mkdir -m 755 mydirectory
ディレクトリ「third」を、親ディレクトリ「top/second/」も含めて一気に作成するには、以下のように実行します。
# mkdir -p top/second/third
installコマンド
ディレクトリの所有者やアクセス権を指定してディレクトリを作成したいときは、istallコマンドが便利です。
たとえば「/usr/local/bin/test」というディレクトリを、所有者がroot、グループがroot、パーミッションを600として作成したいときは、以下のようにコマンドを実行します。
# install -o root -g root -m 600 -d /usr/local/bin/test
ファイルの分割
ファイルを分割したいときは、行数や正規表現を使って分割できるcsplitコマンドや行数やファイルサイズ、個数で分割できるsplitコマンドを利用します。
使用例
csplitコマンド
csplitコマンドでは、行数や正規表現を使ってテキストファイルを分割できます。
たとえば、以下のようなテキストファイル「test.txt」を分割してみます。
$ cat test.txt
aaa
bbb
ccc
ddd
aaa
bbb
ccc
ddd
aaa
bbb
ccc
ddd
行数で分割したいときは、以下のようにコマンドを実行します。以下では3行目で分割しています。
$ csplit test.txt 3
8 ←分割したファイルのサイズが表示されます。
40 ←分割したファイルのサイズが表示されます。
$ head xx*
==> xx00 <==
aaa
bbb
==> xx01 <==
ccc
ddd
aaa
bbb
ccc
ddd
aaa
bbb
ccc
ddd
デフォルトでは、上のように繰り返し実行されませんが、繰り返し回数を指定することもできます。以下のコマンドでは、繰り返し回数に2回を指定しています。(ファイルの末尾まで繰り返いしたいときは「{*}」と指定します。)
$ csplit test.txt 3 '{2}'
8
12
12
16
$ head xx*
==> xx00 <==
aaa
bbb
==> xx01 <==
ccc
ddd
aaa
==> xx02 <==
bbb
ccc
ddd
==> xx03 <==
aaa
bbb
ccc
ddd
また、以下のように複数の行数を指定して分割することもできます。以下では、2行目と6行目で分割しています。
$ csplit test.txt 2 6
4
16
28
$ head xx*
==> xx00 <==
aaa
==> xx01 <==
bbb
ccc
ddd
aaa
==> xx02 <==
bbb
ccc
ddd
aaa
bbb
ccc
ddd
正規表現で文字列パターンを指定して分割したいときは、以下のようにコマンドを実行します。以下では、dから始まる行で分割するよう指定しています。
$ csplit test.txt '/^d.*/' '{*}'
12
16
16
4
$ head xx*
==> xx00 <==
aaa
bbb
ccc
==> xx01 <==
ddd
aaa
bbb
ccc
==> xx02 <==
ddd
aaa
bbb
ccc
==> xx03 <==
ddd
なお、csplitコマンドでは分割したファイルの名前にデフォルトで「xx00」「xx01」という連番が付きますが、分割したファイルの名前(接頭辞や接尾辞)を指定することもできます。
splitコマンド
splitコマンドでは、行数やファイルサイズ、個数でテキストファイルを分割できます。
たとえば、以下のようなテキストファイル「test.txt」を分割してみます。
$ cat test.txt
aaa
bbb
ccc
ddd
aaa
bbb
ccc
ddd
aaa
bbb
ccc
ddd
行数で分割したいときは、以下のようにコマンドを実行します。以下では、5行目で分割しています。
$ split -l 5 test.txt
$ head xa*
==> xaa <==
aaa
bbb
ccc
ddd
aaa
==> xab <==
bbb
ccc
ddd
aaa
bbb
==> xac <==
ccc
ddd
ファイルサイズで分割したいときは、以下のようにコマンドを実行します。以下では、10バイトでとで分割しています。
$ split -b 10 test.txt
$ head xa*
==> xaa <==
aaa
bbb
cc
==> xab <==
c
ddd
aaa
==> xac <==
bbb
ccc
dd
==> xad <==
d
aaa
bbb
==> xae <==
ccc
ddd
個数で分割したいときは、以下のようにコマンドを実行します。以下では、ファイルを3つに分割しています。
$ split -n 3 test.txt
$ head xa*
==> xaa <==
aaa
bbb
ccc
ddd
==> xab <==
aaa
bbb
ccc
ddd
==> xac <==
aaa
bbb
ccc
ddd
なお、splitコマンドで分割したファイルの名前にデフォルトで「xaa」「xab」という連番が付きますが、分割したファイルの名前(接頭辞や接尾辞)を指定することもできます。
ファイルの結合
複数のテキストファイルを一つのファイルに結合したいときは、catコマンドを利用します。
使用例
たとえば、csplitコマンドで分割した複数のファイルを結合したいときは、以下のようにコマンドを実行します。以下では「x00」「x01」「x02」「x03」という4つのファイルを「result.txt」という一つのファイルに結合しています。
$ cat xx00 xx01 xx02 xx03 > result.txt
また、以下のようにワイルドカードを指定して、複数のファイルを結合することもできます。
$ cat xx* > result.txt
なお、catコマンドは引数で指定した順番にファイルが結合されます。
ファイルのタイムスタンプの変更
ファイルのタイムスタンプを変更するときは、touchコマンドを利用します。
使用例
ファイルfile1.txtのタイムスタンプを現在の日時に変更したいときは、以下のように実行します。
# touch file1.txt
ファイルfile1.txtの最終アクセス日時を現在の日時に変更したいときは、以下のように実行します。
# touch -a file1.txt
ファイルfile1.txtの最終更新日時を現在の日時に変更したいときは、以下のように実行します。
# touch -m file1.txt
ファイルfile1.txtのタイムスタンプを5月10日2:15に変更したいときは、以下のように実行します。
# touch -t 05100215 file1.txt
ファイルfile1.txtのタイムスタンプを2021年11月10日12:15に変更したいときは、以下のように実行します。
# touch -t 2111101215 file1.txt
ちなみに、存在しないファイルを指定すると、空のファイルが作成されます。
あとがき
コマンドよるファイル操作方法をマスターしておけば、作業効率は格段にアップすると思います。これはWindows環境でも同じですね。