UNIXコマンドを学んでいます
公開日:
:
最終更新日:2014/01/28
UNIX
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
こんな書籍を少しずつ読んでいます。

UNIXシェルスクリプト逆引き大全333の極意―Linux,FreeBSD,Solaris,Mac OS X対応
- 作者: 中橋一朗
- 出版社/メーカー: 秀和システム
- 発売日: 2004/10
- メディア: 単行本
- 購入: 1人 クリック: 41回
- この商品を含むブログ (21件) を見る
以下、勉強メモ。
カレントディレクトリ内の全てのファイル名を表示
% echo *
指定したディレクトリ内のファイルの一覧を表示する
#!/bin/sh
# dir.sh 指定したディレクトリ内のファイルの一覧を表示する
dir="$1"
set -- "$dir"/*
echo "Directory: $dir"
echo "Number of files: $#"
echo "List of files:"
for name do
echo " $name"
done
% ls -l .
total 16
-rw-r--r-- 1 ssato staff 228 2 26 14:22 dir.sh
-rw-r--r-- 1 ssato staff 95 2 26 14:18 dir.sh~
% chmod u+x dir.sh
% ./dir.sh .
Directory: .
Number of files: 2
List of files:
./dir.sh
./dir.sh~
ファイルの内容で検索する
% grep -l '^#!/bin/sh' *
dir.sh
dir.sh~
% grep '^#!/bin/sh' *
dir.sh:#!/bin/sh
dir.sh~:#!/bin/sh
ファイル名から検索する
% find . -name dir.sh
./sh/dir.sh
% find . -name sh
./sh
% find . -name sh -type f
% find . -name sh -type d
./sh
% find . -name dir.sh -type d
% find . -name dir.sh -type f
./sh/dir.sh
パターンに一致する名前のファイルを探す
% find . -name '*.sh' -print
./sh/dir.sh
./shellscript/misc/akio0911/change_svn_url.sh
% find . -name '*.sh' -type f -print
./sh/dir.sh
./shellscript/misc/akio0911/change_svn_url.sh
% find . -name '*.sh' -type d -print
%
- name でもワイルドカードだけなら使えるみたい。
正規表現に一致する名前のファイルを探す
% find . -regex '.*/[a-z]\{2\}/[a-z]\{3\}.[a-z]\{2\}' -print
./sh/dir.sh
更新日付からファイルを検索する(初級編)
% find . -mtime -7
.
./dir.sh
./dir.sh~
% find . -mmin -60
% find . -mmin -120
.
./dir.sh
./dir.sh~
%
検索で見つかったファイルに対してコマンドを実行する
% find . -name '*~' -ok rm \{\} \;
"rm ./dir.sh~"? n
% ls
dir.sh dir.sh~
% find . -name '*~' -exec ls -l \{\} \;
-rw-r--r-- 1 ssato staff 95 2 26 14:18 ./dir.sh~
テキストファイルの内容を検索する
% cat test.txt
**FIXME**
**FIXYOU**
% fgrep -r '**FIXME**' .
./test.txt:**FIXME**
テキストファイルの内容を検索置換する
% cat test.txt
**FIXME**
**FIXYOU**
% sed 's/ME/US/g' < test.txt
**FIXUS**
**FIXYOU**