如何在目录中提取文件的扩展名?

时间:2016-11-21 04:55:36

标签: bash macos unix

目录的名称是已知的,并且已知此目录中的所有文件具有相同的扩展名。我只需要提取一个扩展名并将其分配给变量。

我有一个脚本,它根据目录的内容采用不同的例程。例如,如果文件夹包含jpg个文件,则脚本会对tiff个文件执行不同的操作。我的脚本不需要知道文件的名称或数字,只需知道它们的扩展名。所以我需要提取任何一个文件的扩展名(所有文件具有相同的扩展名),并将其分配给变量。

我试过这样的事情:

variable=$(basename "/path/dir/*")
extension="${variable##*.}"

其中"*"通配符列出了所有文件。我只需要一个扩展名。

3 个答案:

答案 0 :(得分:0)

您可以使用awk查找扩展程序。

for file in directory/*.*; do
    var=$(echo $file | awk 'BEGIN{FS="."} {print $NF}')
    break
done

在这个例子中,FS告诉awk使用句号“。”分隔字段,$ NF指定最后一个字段。

答案 1 :(得分:0)

extension=$(ls directory_path/ | awk -F. 'NR==1{print $NF}')

答案 2 :(得分:0)

file=$(find directory -maxdepth 1 -mindepth 1 -type f -print -quit)
ext="${file##*.}"

find命令查找directory中的第一个文件,打印路径并退出。结果(路径)将写入file变量。

下一行从路径前面删除*.的最长匹配,并将结果分配给ext变量。

根据需要调整-maxdepth-mindepth选项。