Linux コマンド:ファイル/ディレクトリ操作

ファイル操作

nautilus

ファイルマネージャーで開く
$ nautilus test1
※test1というファイルorディレクトリをファイルマネージャーで開く

tar

アーカイブ作成/展開
※圧縮/解答ではない。

オプション 機能
-c 書庫を新規に作成する
-x 書庫からファイルを取り出す
-v 処理したファイルの一覧を詳細に表示する
-f ファイル名:指定した書庫ファイルまたはデバイスを使用する。
-C ディレクトリ名:指定したディレクトリに移動してから動作を始める
-z ~.tar.gz形式のファイルを展開

例:書庫ファイルを展開する
$ tar -xvf test.tar
$ tar xzvf test.tar.gz


zip/unzip

解凍
$ unzip (ファイル名).zip

圧縮ファイル内容一覧
$ unzip (ファイル名)

圧縮
$ zip (圧縮後ファイル名).zip (圧縮前ファイル名)
例:$ zip after.zip *.txt

zipclock

zipcloak zipファイルパス
zipコマンドで圧縮したzipファイル限定

7z

インストール
yum install -y p7zip-full

解凍
7za x ~.7z

gzip

圧縮
gzip (ファイル名)
解凍
gzip -d ~.gz

テキスト操作

cat

ファイルの中身を出力

head/tail

先頭/末尾n行のみ出力する。
head -n 10
tail -n 10
head – 10
tail – 10
nは省略可

sed

1~10行目を除外(削除)して表示
sed -e ‘1,10dtest.txt

指定行に文字列を差し込み
sed -i -e ‘1i aaaaaoutput.txt

置換してファイルを上書き
sed -i “s/置換前文字列/置換後文字列/g” test.txt
sed -i “s/before/after/g” test.txt

複数ファイルを置換
xargs」参照

指定行に別ファイルの内容を差し込み
sed -i -e ‘1r input.txtoutput.txt

wc

テキスト・ファイルの行数、単語数、バイト数を表示
$ wc (ファイル名)
行数のみ表示
$ wc -l (ファイル名)

grep

引数を含む行のみを抽出する。
$ grep オプション 検索語 検索対象ファイル
$ grep -X test test.txt

オプション 機能
-i 大文字と小文字を区別しない
-w 単語全体でパターンと一致するものを検索する
-R サブディレクトリ以下も検索する
-l 検索パターンにマッチしたファイル名のみ表示
-X 正規表現で検索

正規表現
$ grep -X aa*bb /etc/*.conf

ファイル名のみ出力
$ grep -ril “aaaaa” /etc/

パイプ処理
$ cat /etc/passwd | grep /bin

複数ファイルからGrep
xargs」参照

cut

入力文字列を引数で分割する。
$ /etc/passwd cut -d ‘:’
文字列を’:’で分割し、1番目の列のみ抽出する。
$ etc/passwd cut -d ‘:’ -f 1

sort

入力文字列をソートする
$ /etc/passwd sort

diff

差分表示
$ diff (ファイル1) (ファイル2)
ディレクトリの差分表示
$ diff -r (ディレクトリ1) (ディレクトリ2)
※ディレクトリにファイルが無い場合は差分を抽出してくれない
差分記号無しで差分表示1
$ diff (ファイル1) (ファイル2) | grep -e ‘^>’ | perl -pe ‘s/^<\s//g' | -pe 's/^>\s//g’
差分記号無しで差分表示1
$ diff –old-line-format=’%L’ –new-line-format=’%L’ –unchanged-line-format=” (ファイル1) (ファイル2)

uniq

上下行の重複を削除
$ sort (ファイル名) | uniq

less

1画面ずつ表示
$ less (ファイル)
Linuxコマンドをパイプ処理
$ (コマンド) | less
$ grep aaa test.txt | less
表示結果の先頭に行番号を付加
$ less -N (ファイル)
$ grep aaa test.txt | less -N
検索語を強調表示
$ less -p (文字列) (ファイル)
$ grep aaa test.txt | less -p aaa
【画面表示時の操作】
次頁:「Space」
前頁:「b」
次行:「j」= vi
前行:「k」= vi

vi

Vi/Vim/GVim使用方法」参照

検索

locate

$ locate (ファイル名)
$ locate httpd.conf
自階層以下より検索
$ locate -b
検索結果を削除
$ locate -b ~ | xargs rm -rf

find

find (検索先ディレクトリ) (検索条件) (アクション)
(検索先ディレクトリ)省略 → カレントディレクトリが検索先
(検索条件) → 全ディレクトリ、全ファイルが検索対象
(アクション) → 検索結果を全て表示(-lsアクションと同等)
複数ディレクトリを検索
find (検索先ディレクトリ) (検索先ディレクトリ) (検索条件) (アクション)
find /a /b -name test.txt
複数(AND)条件で検索
find (検索先ディレクトリ) (検索条件) (検索条件) (アクション)
find / -name test -type f
複数(OR)条件で検索
find (検索先ディレクトリ) (検索条件) -OR (検索条件) (アクション)
find / -name aaa -or -name bbb
複数(AND、OR)条件で検索
find (検索先ディレクトリ) (検索条件) (検索条件) -OR (検索条件) (アクション)
find / -name aaa -type f -or -name bbb
除外条件で検索
find (検索先ディレクトリ) !(検索条件) (アクション)
find / !-name aaa
複数除外条件で検索
find (検索先ディレクトリ) !(検索条件) (アクション)
find / !-name aaa !-name bbb
ファイル/ディレクトリ名で検索
find / -name aaa
find / -name *.txt
find / -name aaa.*
正規表現で検索
find / -regex (正規表現)
ファイルのみを検索
find / -type f ~
ディレクトリのみを検索
find / -type d ~
指定バイトより大きいファイルを検索
find / -size +500 ~
指定バイトより小さいファイルを検索
find / -size -500 ~
検索するディレクトリ階層を制限して検索
find / maxdepth 1 ~
指定ディレクトリの直下のみ
find / maxdepth 2 ~
指定ディレクトリから1階層下までを検索
検索結果Linuxコマンドを実行
find ~ -exec (Linuxコマンド)
find ~ -exec rm -rf {} \;
{}は検索結果によって置換される。
1.txt
2.txt
3.txt
が検索された場合、
rm -rf 1.txt
rm -rf 2.txt
rm -rf 3.txt
が1つずつ実行される

find ~ | xargs (Linuxコマンド)
find ~ | xargs rm -rf
-execと違って検索結果が同時に処理される