0

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

#!/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
4

1 回答 1

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

于 2013-02-21T16:12:59.673 回答