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

问题描述:

需要此帮助请 想要将参数作为目录接收参数的脚本,浏览thoses目录以便在找到的每个文件上添加正确的扩展名,或者如果它是要添加.aaa的目录作为扩展 的文件,可是没有任何扩展,我必须使用COMAND文件,以确定文件类型(文件没有extyension) 感谢在文件上添加扩展名的Shell脚本

#!/bin/sh 
for dir in "[email protected]"; 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

有一些'then's失踪。 '''后面应该跟一个空格。 – choroba 2013-02-21 15:51:28

你大概意思是这样的:

for dir in "[email protected]" 
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 

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

编辑:egrep是在原来的发布的问题。 添加了unset