BASHスクリプト

1670 ワード

1.現在のディレクトリ内の500 Mより大きいすべてのファイルを検索し、これらのファイル名を1つのテキストファイルに書き込み、その数を統計します.
find ./ -size +500M -type f | tee file_list | wc -l

2.ディレクトリ/tmpの下にabcで始まる100個のファイルを見つけ、これらのファイルの最初の行をファイルnewに保存します.
for filename in `find /tmp -type f -name "abc*"|head -n 100`
do
sed -n '1p' $filename>>new
done

3.ファイルbにあるが、ファイルaにないすべての行をファイルcとして保存し、cの行数を統計する.
grep -xvf a b | tee c | wc –l

4.ファイルがブロックまたは文字デバイスファイルであるかどうかを判断し、/devディレクトリにコピーした場合
read -p "input a file:" filename
if [ -b $filename -o -c $filename ]
then
    cp $filename /dev/
fi

5.10分おきに監視し、監視/usrの下で5 Gより大きい場合は管理者にメールを送る
#!/bin/bash
while true
do
    sleep 600
    n=$(du -s /usr | cut -f1)
    if [ $n -gt 5242880 ]
    then
        mail -s "greater" [email protected] < ~/filename # filename 。
    fi
done

6.あるディレクトリの下のファイル拡張子をbatに変更し、時間をファイル名として圧縮パッケージしてあるディレクトリに保存します.
#!/bin/bash
for file in $(ls $1)
do
    new_file=${file%.*}.bat
    mv ./$1/$file ./$1/$new_file
    tmp=$(date +%y)
    tar cvf ./$tmp.tar ./$1
done