如何在文件夹层次结构(Linux)中找到所有不同的文件扩展名?
虽然有很多方法可以使用不同的实用程序命令在Linux中找到特定文件的扩展名,但如果我们需要在文件夹层次结构中找到所有不同的文件扩展名,我们首先需要了解find和sed命令的用法这些命令将用于打印文件夹或文件夹层次结构中的所有不同文件扩展名。
我们必须注意的两个Linux实用程序命令是-
find-用于定位特定文件或目录
sed-流编辑器的缩写,用于执行搜索、编辑和替换等功能。
当我们谈论单个文件夹时,我们甚至不需要find命令,因为我们可以通过迭代所有文件然后也使用sort命令来简单地做到这一点。
假设我有一个名为dir1的目录,我想知道该文件夹中不同的文件扩展名。
为此,我将在该目录中键入如下所示的命令。
命令
for file in *.*; do printf "%s\n" "${file##*.}"; done | sort -u输出结果
immukul@192 dir1 % for file in *.*; do printf "%s\n" "${file##*.}"; done | sort -u app c dmg doc docx epub go h htm jnlp jpeg jpg json mp4 o odt pdf png srt torrent txt webm xlsx zip
如您所见,上述示例中列出的所有扩展都是不同的。现在,如果我们想在文件层次结构中列出所有不同的文件扩展名,那么我们需要向上述命令添加递归。
命令
find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///'|排序-u输出结果
immukul@192 dir1 % find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///'|排序-u app c dmg bz2 callgrind case-hosts cc cfg cgi comments conf config contention cov cpu crash crt css csv dat debug_rnglists demangle-expected dep description