Bash-检查目录中存在哪种类型的文件

时间:2018-01-10 18:31:28

标签: linux bash shell ubuntu

我需要的功能是查找文件扩展名的类型,并在终端中显示它。我正在尝试使用命令find,但我不知道该怎么做。

例如,这是我的目录的内容:music1.mp3; music2.mp3; document.txt; movie.avi; movie2.avi; movie3.avi

输出应如下所示:

 Available extensions: mp3, txt, avi

所以我不想准备一些特定的扩展,我想在目录中寻找所有现有的扩展

2 个答案:

答案 0 :(得分:0)

使用find命令:

find /path/to/your/folder/ -type f | sed -rn 's|.*/[^/]+\.([^/.]+)$|\1|p' | sort -u

在OSX上,将-r参数替换为-E

答案 1 :(得分:0)

这仅报告包含点的非隐藏文件名:

declare -A ext
for f in *; do 
    e=${f##*.}
    [[ $f != "$e" ]] && ext[$e]=1
done
( IFS=,; echo "available extensions: ${!ext[*]}" )

这相当于:

perl -MList::Util=uniq -E '
    opendir $d, ".";
    @ext = uniq map {/([^.]+$)/} grep {/^[^.].*[.]/} readdir $d;
    say "extensions: ", join ",", @ext
'