用于在文件上添加扩展名的Shell脚本

时间:2013-02-21 15:48:30

标签: bash

需要帮助 想要一个将接收参数作为目录的脚本,浏览目录以在找到的每个文件上添加正确的扩展名,或者是否是要添加.aaa作为扩展名的目录 文件没有任何扩展名,我必须使用命令文件来确定文件类型(文件没有extyension) 感谢

#!/bin/sh
for dir in "$@"; do
    for file in "$dir"/*;
    do    
        if [[ -d $file ]]
        then
            ext=dir
        else
            file -i * | egrep 'avi|txt|jpeg|pst'
        fi
        if [file eq avi]
            ext=avi
        else
            if [file eq txt]
                ext=txt
            else
                if [file eq jpeg]
                    ext=jpeg
                fi
    done
done

1 个答案:

答案 0 :(得分:0)

你可能意味着这样的事情:

for dir in "$@"
do
    for file in "$dir"/*
    do
        ftype=$(file -i "$file")
        unset ext
        case $ftype in
            *directory*) ext=aaa
                         ;;
            *avi*) ext=avi
                   ;;
            *text*) ext=txt
                   ;;
            *jpeg*) ext=jpeg 
                    ;;
            *ps*) ext=ps
                  ;;
            *) echo "File '$ftype' not recognised for file $file" >&2
               continue
               ;;
        esac                                                           
        echo "Renaming '$file' to '$file.$ext'"
        mv "$file" "$file.$ext"
    done
done

请注意,egrep不需要,file也会报告目录,因此无需进行-d测试。

修改:egrep位于原始发布的问题中。        添加了unset