Bash脚本根据扩展名显示目录中的文件路径和大小

时间:2018-05-22 03:06:05

标签: bash shell

目前我需要创建一个bash脚本让用户输入目录路径,例如/ home,它将循环遍历整个主目录,并根据文件扩展名显示文件路径和文件大小的摘要(.exe ,.mp3,.avi)。

例如,在我的主目录中,有些文件具有以下文件格式 - 。可执行程序 - .pdf - 。文本 - .mp3 - .avi - .mp4

因此,当我运行脚本时,它应该在控制台上显示摘要,然后删除文件。

function check {
    for file in $1/*      
    do
    if [ -d "$file" ]
    then
            check $file                          
    else
           ##check for the file
           if [ $(head -c 4 "$file") = "%EXE" || $(head -c 4 "$file") = "%MP3" || $(head -c 4 "$file") = "%AVI" ]; then
         find $filepath -iregex ".*\.\(exe\|mp3\|avi\)" > log
                     rm -r $file
                     my $filecounter +=1;
         print "$filecounter files are removed"
           fi
    fi
    done     
}
print "Please enter file path:";
chomp( my $filepath = <STDIN> );
check $filepath

以下是我尝试过的代码。

/^\/?([^\/]+\/)+[^\/.]+\.[^\/.]+$/g

1 个答案:

答案 0 :(得分:0)

要列出$ mydir目录中的文件并将其删除,请使用

shopt -s nullglob
for f in $mydir/*.{exe,mp3,avi}
do 
    rm -v $f
done

使用 nullglob 可确保在没有与某个扩展名匹配的文件时,不会执行循环。 rm -v选项可确保将文件报告给stdout。