:!-- Auther ycos@pos.to / Powerd by vi(1) -->
-l ファイルの表示 -r ファイルの削除(対話モード) -R ファイルの削除
# | スクリプト | 解説 | |
---|---|---|---|
1 | #! /bin/bash | # | |
2 | # @(#) remove tmp files ( a.out / core .. ) | # | |
3 | usage() | # ヘルプを表示する関数 | |
4 | { | # | |
5 | cat <<EOD | # | |
6 | $0 [-lrR] | # | |
7 | -l list work files(defaults) | # | |
8 | -r remove work files with -i option | # | |
9 | -R remove work files | # | |
10 | EOD | # | |
11 | exit 0 | # スクリプトを終了 | |
12 | } | # | |
13 | # | ||
14 | [ $# -ne 1 ] && set - -l | # 引数が1つでなければ "-l" を引数にセットしなおす | |
15 | case $1 in | # 引数の1つ目を検査、コマンドを選定 | |
16 | -l) cmd="/bin/ls -ld" ;; | # -l の時、ls を準備 | |
17 | -r) cmd="/bin/rm -i" ;; | # -r の時、rm を準備 | |
18 | -R) cmd="/bin/rm -f" ;; | # -R の時、rm を準備 | |
19 | *) usage;; | # 上記以外はヘルプ関数を呼び出す | |
20 | esac | # | |
21 | # | ||
22 | find . \( \ | # find によるファイルの検索(複数条件) | |
23 | -name '[a-zA-Z]' \ | # 一文字ファイル(a, B など) | |
24 | -o -name '?.*' \ | # 1文字のベースファイル(a.txt, b.cなど) | |
25 | -o -name 'core' \ | # core ファイル | |
26 | -o -name '*_bakcup' \ | # _backup で終わるファイル | |
27 | -o -name '.*.sw[a-z]' \ | # vim のワークファイル | |
28 | -o -name '.nfs*' \ | # NFSのワークファイル | |
29 | -o -name '*~' \ | # ~ で終わるファイル | |
30 | \) -exec $cmd $* {} \; | # 15〜20行で用意したコマンドを実行 |
$ clean -rwxr-xr-x 1 ycos users 81240 Nov 3 16:00 ./core -rwxr-xr-x 1 ycos users 4709 Nov 3 16:00 ./a.out -rw-r--r-- 1 ycos users 16782 Nov 3 16:24 ./a.txt -rw-r--r-- 1 ycos users 30 Nov 3 16:00 ./a.c $ clean -r /bin/rm: remove regular file `./core'? y /bin/rm: remove regular file `./a.out'? y /bin/rm: remove regular file `./a.txt'? /bin/rm: remove regular file `./a.c'? y