目前我需要创建一个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
答案 0 :(得分:0)
要列出$ mydir目录中的文件并将其删除,请使用
shopt -s nullglob
for f in $mydir/*.{exe,mp3,avi}
do
rm -v $f
done
使用 nullglob 可确保在没有与某个扩展名匹配的文件时,不会执行循环。 rm 的-v
选项可确保将文件报告给stdout。