我需要的功能是查找文件扩展名的类型,并在终端中显示它。我正在尝试使用命令find
,但我不知道该怎么做。
例如,这是我的目录的内容:music1.mp3; music2.mp3; document.txt; movie.avi; movie2.avi; movie3.avi
。
输出应如下所示:
Available extensions: mp3, txt, avi
所以我不想准备一些特定的扩展,我想在目录中寻找所有现有的扩展
答案 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
'