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,10d‘ test.txt
指定行に文字列を差し込み
sed -i -e ‘1i aaaaa‘ output.txt
置換してファイルを上書き
sed -i “s/置換前文字列/置換後文字列/g” test.txt
sed -i “s/before/after/g” test.txt
複数ファイルを置換
「xargs」参照
指定行に別ファイルの内容を差し込み
sed -i -e ‘1r input.txt‘ output.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と違って検索結果が同時に処理される