2012年2月4日土曜日

[Shell 基础] 文件操作

1. 文件比较

-nt: file1 is newer than file2
-ot: file1 is older than file2
-d:  test -d file1 file1 是文件夹返回 true
-f:  test -f file1 file1 是普通文件返回 true
-s:  test -s file1 file1 zise 大于 0 返回 true
-e:  test -e file1 file1 存在返回 true
-r:  test -r file1 file1 可读返回 true
-w:  test -w file1 file1 可写返回 true
-x:  test -x file1 file1 可执行返回 true

test file1 -nt file2; echo $?
[ -f file1 ]; echo $?
--------------------------------------------------------------------------------
2. 文件逐行读取

#!/bin/sh
l_num=1
filename=$1
if [ ! -f $filename ]; then
    echo "error in $0: no such file, $filename"
fi
# cat $filename | while read line
while read line
do
    echo "$l_num : $line"
    l_num=`expr $l_num + 1`
# done
done < $filename
--------------------------------------------------------------------------------
3. 文件夹下文件(文件夹)名 (全路径或短路径)

#!/bin/sh
dir="/usr/local/*"
for file in ${dir}
do
    echo ${file}
    # filename=`basename $file`
    # echo $filename
done
--------------------------------------------------------------------------------
4. 获取文件后缀

#! /bin/bash
file=$1
echo "filename: ${file%.*}"
echo "extension: ${file##*.}"

aaa      => aaa aaa
aaa.sh   => aaa sh
aaa.sh.a => aaa.sh a
--------------------------------------------------------------------------------

0 件のコメント:

コメントを投稿